【发布时间】:2018-06-25 07:24:57
【问题描述】:
我试图在第一次通过实体框架创建记录时初始化 CreatedAt 和 Guid 值。但是当使用相同的模型执行更新时,我不想覆盖那个值。 (因为它是创建的时间戳)
这是我目前拥有的:
public EntityBase()
{
if(this.CreatedAt == null)
this.CreatedAt = DateTimeOffset.Now;
this.UUId = new Guid();
this.UpdatedAt = DateTimeOffset.Now;
}
每当我创建此模型的实例时,都会调用构造函数并生成一个新的 DateCreated 值。这会是一种有效的方式吗?
【问题讨论】:
-
最好的方法是为
CreatedAt使用数据库默认约束并将属性标记为数据库生成。 -
如果您希望在实体框架中自动处理创建和更新日期,我们使用 this technique 覆盖 savechanges() 并使用接口标记这些类。
标签: c# asp.net-mvc entity-framework asp.net-core