每当插入新行时,我想将 CreatedDate
列设置为当前日期时间,所以我这样做了:
public DateTime CreateDate { get; set; } = DateTime.Now;
我测试了它,它工作得很好,这是一种实用的方法吗?我看到很多文章用这么多代码和使用流畅的 API 实现了同样的效果,没有人提到这种简单的方法?
这取决于你想要完成什么。
I saw many articles achieve the same with so much code and using fluent API,
这些文章中的大部分都是关于在数据库级别添加默认值的。你没有那样做。如果您使用纯 SQL 向表中插入一行,并且没有为 CreatedDate
指定值,您将收到错误消息。
对于您正在做的事情,插入时始终需要在 SQL 中指定 CreatedDate
。但 Entity Framework 将在插入时始终在 SQL 中指定它,并完全忽略在数据库级别设置的任何默认值。
因此,如果这就是您想要的——默认值仅在通过 C# 创建对象时应用——那么您所做的就完全没问题。它也可以写成从类的构造函数内部设置值。
@Alex Kozlowski 提出了一个很好的评论,即 DateTime.Now
可能不是您期望插入的值。这取决于哪个系统正在运行代码。时区可能与您的服务器不同,或者时钟可能不同步。
我是一名优秀的程序员,十分优秀!