我有一个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,并稍后更新它的值。 –