我有一個SQL Server數據庫。其中一個表有一個SQL DATETIME
列。創建記錄時不必輸入此列,但稍後應該修改。在ASP.NET MVC中使用默認DateTime的正確方法5
我知道DateTime
是不可空的。 datetime2
的默認值爲1/1/0001,而SQL Server的最小值爲1/1/1753。
Why when I insert a DateTime null I have "0001-01-01" in SQL Server?
所以,我的問題是:如何做到這一點的正確方法是什麼?如何將po.PODate
設置爲SQL Server的最小值(1/1/1753)。
ApplicationDbContext db = new ApplicationDbContext();
PurchaseOrder po = new PurchaseOrder();
po.PODate = new DateTime(1753, 1, 1); // Best way?
// po.PODate = DateTime.MinValue; Doesn't work because DateTime.MinValue is 1/1/0001
// po.PODate = null; Doesn't work because DateTime is non-nullable value type
// po.PODate = DBNull.value; Doesn't work because it is for type System.DBNull not DateTime
db.PurchaseOrders.Add(po);
db.SaveChanges();
爲什麼在創建記錄時不使用'DateTime.Now'? –
我不想讓PODate的默認值成爲當前時間,我希望它成爲一種永遠不會發生的「荒謬的」DateTime。稍後,時間將更改爲現實的日期時間。 –
然後只需修改你的屬性接受null。 'DateTime PODate {get;組; ''到'DateTime? PODate {get;組; }'。提供虛假(或荒謬)的數據不是最佳實踐。如果您不需要將數據設置爲NULL,並稍後更新它的值。 –