[研究] 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
沒有留言:
張貼留言