Entity Framework 欄位預設值相關問題

整理兩個跟 Entity Framework 處理欄位預設值有關的問題:(1) 如何設定 entity 的欄位預設值? (2) 當資料表中的某個欄位有指定預設值,例如 CreatedTime 欄位的預設值為 getdate(),透過 Entity Framework 5 異動資料時,該預設值的設定卻沒作用?


問: 如何設定欄位的預設值?

: 在 Visual Studio 中開啟 .edmx 檔案,在模型編輯器中點選 entity 的屬性,然後到屬性視窗中設定其 Default Value 屬性。參考下圖:



或者也可以用程式碼來達成這個目的。方法很多,例如:

問: 在設計資料庫時明明有指定欄位的預設值,可是每次透過 EF 新增資料時,該欄位的值卻是 null?

例如某資料表有個 ModifiedDate 欄位,其預設值為 getdate(),如下圖所示:


在呼叫 DbContext 的 SaveChanges 方法之後,該筆記錄的 ModifiedDate 欄位值卻仍是 null。

使用的工具是 Visual Studio 2012 + Entity Framework 5。

答: 在 Visual Studio 中開啟你的 .edmx 檔案,在模型編輯器中點選 entity 的欄位,然後到屬性視窗中把這個欄位的 StoreGeneratedPattern 屬性值由預設的 None 改為 Computed,如下圖所示:


修改之後,.edmx 檔案內容會產生如下變動:


Visual Studio 2010 + Entity Framework 4 也是同樣的情形,同樣的解法。

Post Comments

技術提供:Blogger.