EF:是否可以为创建的日期属性使用默认值?

本文关键字:属性 日期 默认值 创建 是否 EF | 更新日期: 2023-09-27 18:16:17

我想在插入新行时将CreatedDate列设置为当前日期时间,所以我这样做:

public DateTime CreateDate { get; set; } = DateTime.Now;

我测试了它,它工作得很好,这是一个实用的方法吗?我看到很多文章用这么多代码和流畅的API实现了同样的目标,没有人提到这个简单的方法?

EF:是否可以为创建的日期属性使用默认值?

这取决于你想完成什么。

我看到很多文章用这么多代码和流畅的API实现了同样的目标,

这些文章中的大多数都是关于在数据库级别添加默认值的。你不能这么做。如果您使用普通SQL将一行插入到表中,并且没有为CreatedDate指定值,则会得到错误。

与你所做的,CreatedDate总是需要在SQL插入时指定。但是实体框架将在插入时始终在SQL中指定它,并且完全忽略在数据库级别设置的任何默认值。

所以如果这就是你想要的——默认值只在通过c#创建对象时被应用——那么你所做的是完全没问题的。也可以写成从类的构造函数内部设置值。

@Alex Kozlowski提出了一个很好的评论,那就是DateTime.Now可能不是您期望插入的值。这取决于哪个系统正在运行代码。时区可能与您的服务器不同,或者时钟可能不同步。

是。这个特性是在c# 6版本以后添加的。这只能从c#-6开始工作。这就是为什么你在很多文章中找不到它的原因。