如何使用默認的實體框架和默認日期值

c# entity-framework

在我的SQL Server數據庫模式中,我有一個數據表,其日期字段包含默認值

CONVERT(VARCHAR(10), GETDATE(), 111)

這是手動將記錄輸入數據庫時自動將日期插入新記錄的理想選擇。

我遇到的問題是,當使用實體框架並映射Date字段時,實體框架在實例化實體時插入默認值DateTime.Min。

我無法將Date字段映射到可以為空的DateTime,即DateTime ?,我也無法在Entity Designer的默認值中使用CONVERT或DateTime.Now.Today,因為它只接受硬編碼的常量值。

我當然可以在創建對象時在C#中顯式設置DateTime字段,無論是在代碼中顯式地在部分類的構造函數中,還是在保存更改事件期間。

有沒有其他方法可以實現我想要的,而實際使用的是存儲在數據庫表中的默認值計算?

一般承認的答案

我剛剛碰到了這個 - 我通過使用partial方法在Entity的構造函數中設置日期(我需要自動生成的字段)來解決它。這是理想的還是它在所有情況下是否有效還有待觀察,但到目前為止它已經解決了我的問題。


熱門答案

為EntityObject創建一個分部類,添加一個默認構造函數,並在其中設置默認值。

    public partial class YourDBObject
    {
          public YourDBObject()
          {
               this._DateField = DateTime.Now;
          }
    }


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因