問: 如何設定欄位的預設值?
答: 在 Visual Studio 中開啟 .edmx 檔案,在模型編輯器中點選 entity 的屬性,然後到屬性視窗中設定其 Default Value 屬性。參考下圖:
或者也可以用程式碼來達成這個目的。方法很多,例如:
- 在 entity 類別的建構函式中設定初始值。
- 改寫 ObjectContext 的 SaveChanges 方法,在儲存資料之前動手腳。
- 參考:Entity Framework Code First & Default Column Values
- 參考:Entity Framework 4 and Default Values
問: 在設計資料庫時明明有指定欄位的預設值,可是每次透過 EF 新增資料時,該欄位的值卻是 null?
例如某資料表有個 ModifiedDate 欄位,其預設值為 getdate(),如下圖所示:
例如某資料表有個 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 也是同樣的情形,同樣的解法。