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

C# 实体框架代码优先-保存实体时设置属性的最佳方法是什么,c#,.net,entity-framework-4.1,ef-code-first,code-first,C#,.net,Entity Framework 4.1,Ef Code First,Code First,我正在使用EntityFramework4.1,并使用代码优先的方法 这是我的课 public class Dummy { public string Name { get; set; } public DateTime lastModifiyed { get; set; } } 我想做的是,每次保存虚拟对象时,LastModified属性都应设置为当前时间 即使我使用像Required这样的属性,这段代码仍然有效 var d = new Dummy(); d.lastModi

我正在使用EntityFramework4.1,并使用代码优先的方法

这是我的课

public class Dummy {
    public string Name { get; set; }
    public DateTime lastModifiyed { get; set; }
}
我想做的是,每次保存虚拟对象时,LastModified属性都应设置为当前时间

即使我使用像Required这样的属性,这段代码仍然有效

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

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

重写
SaveChanges
方法,然后在调用
base.SaveChanges
之前从更改跟踪器枚举更改。即:

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;
}