实体框架代码优先-保存实体时,设置属性的最佳方法是什么

本文关键字:实体 属性 设置 最佳 是什么 方法 代码 框架 保存 | 更新日期: 2023-09-27 18:22:03

我使用的是实体框架4.1,并使用代码优先的方法。

这是我的班级

public class Dummy {
    public string Name { get; set; }
    public DateTime lastModifiyed { get; set; }
}

我想做的是,每次保存Dummy对象时,lastModifiyed属性都应该设置为当前时间。

即使我使用的是requed这样的属性,这个代码仍然有效。

var d = new Dummy();
d.lastModifiyed = DateTime.MinValue

做这种事情的最佳做法是什么。我读过重写从DbContext继承的类中的SaveChanges并检查例如接口是一个很好的方法。或者我该怎么办?

实体框架代码优先-保存实体时,设置属性的最佳方法是什么

重写SaveChanges方法,并在调用base.SaveChanges之前从更改跟踪器枚举更改。I.e:

foreach (var item in (this as IObjectContextAdapter).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted)
    .Where(entry => entry.Entity is ITracksLastModified)
    .Select(entry => entry.Entity as ITracksLastModified))
{
    item.LastModified = DateTime.UtcNow;
}