我想在插入新行时将CreatedDate
列设置为当前日期时间,所以我这样做:
public DateTime CreateDate { get; set; } = DateTime.Now;
我测试了它并且工作得很好,这是一种实用的方法吗?我看到很多文章用如此多的代码和使用流畅的API实现相同的功能,没有人提到过这个简单的方法吗?
答案 0 :(得分:3)
这取决于你想要完成的事情。
我看到许多文章使用流畅的API,
来实现相同的代码
这些文章中的大多数都是关于在数据库级别添加默认值。你不是那样做的。如果使用纯SQL在表中插入一行,并且没有为CreatedDate
指定值,则会收到错误。
使用您正在执行的操作,在插入时始终需要在SQL中指定CreatedDate
。但实体框架将在插入时始终在SQL中指定它,并完全忽略在数据库级别设置的任何默认值。
所以,如果这就是你想要的 - 只有在通过C#创建对象时才会应用默认值 - 那么你所做的就完全没问题了。它也可以写成从类的构造函数中设置值。
@Alex Kozlowski提出了一个很好的评论,即DateTime.Now
可能不是您期望插入的值。这取决于运行代码的系统。时区可能与您的服务器不同,或者时钟可能不同步。
答案 1 :(得分:1)
是。此功能已在c#版本6中添加。这仅适用于c#-6。这就是为什么你在许多文章中都找不到它的原因。