2016年11月17日 星期四

[研究] Entity Framework "Cannot insert the value NULL into column"

[研究] Entity Framework "Cannot insert the value NULL into column"

2016-11-17

環境:Visual Studio 2015

資料庫某欄位原本允許 NULL,後來改成 NOT  NULL,且有預設值,
Eitity Framework 執行 SaveChanges();時候出錯

首先要用 Visual Studio 把 .edmx 這個 Model 檔案更新,因為 SQL Database Schema 修改,Model 不會自動跟著修改。其中非使用者自行建立的資料表 (table) 請勿選入,例如 __MigrationHistory、AspNetRoles、AspNetUserClaims、AspNetUserLogins、AspNetUserRoles、AspNetUsers、、、等請勿選入。

.edmx 檔案更新後,Entity Framework 不會自動抓取 SQL Server Database 中的 Default 值,所以欄位設定為 NOT  NULL時候,若在  SaveChanges() 時候沒有設定值, SaveChanges() 會出錯。

把 .aspx 檔案中的 <asp:SqlDataSource>  的
<asp:Parameter Name="xxx" Type="String" />
某些欄位改為
<asp:Parameter Name="xxx" Type="String" DefaultValue="" ConvertEmptyStringToNull="false" />
就可以了。

********************************************************************************

另一種方法

在 Visual Studio 中開啟 .edmx 檔案,在模型編輯視窗中點選 entity 的屬性,然後到屬性視窗,把StoreGeneratedPattern從None改為Computed,並設定其 Default Value 屬性。



(完)

相關

Entity Framework問題筆記
http://toyo0103.blogspot.tw/2013/05/entity-framework.html

Entity Framework 欄位預設值相關問題
http://huan-lin.blogspot.com/2012/12/entity-framework-column-default-value.html

沒有留言:

張貼留言