[英]Update Created and Modified Date fields in DBContext class with Entity framework
有没有一种方法可以在保存实体时将其DateCreated和UpdateDate字段设置为某个日期来更新或插入实体。
我有一个数据提供程序帮助程序类,该类封装了我所有数据对象的更新,添加和删除功能。 但是,在保存对象时,DateCreated和UpdateDate字段为null,并且我没有为它们分配当前日期。 我想要保存分配了这些日期的对象。 我想避免在执行保存操作的任何地方更改代码。 是否可以在DBContext类中执行此操作?
重写DbContext.SaveChanges
以实现此交叉功能。 如果只需要将属性分配给某些实体类型,则可以使用接口或类属性来区分它们,而不是进行缓慢的反射检查:
public partial class PostalDbContext
{
public override int SaveChanges()
{
DateTime time = DateTime.Now;
var entries = ChangeTracker.Entries()
.Where(entry => entry.Entity is ITrackableEntity)
.ToList();
ITrackableEntity x;
foreach (var entry in entries.Where(e => e.State == EntityState.Added))
{
entry.SetPropertyValue(nameof(x.DateCreated), time);
}
foreach (var entry in entries.Where(e => e.State == EntityState.Modified))
{
entry.SetPropertyValue(nameof(x.DateModified), time);
}
return base.SaveChanges();
}
}
public static class DbEntityEntryEx
{
public static void SetPropertyValue<T>(this DbEntityEntry entry, string propertyName, T time)
{
entry.Property(propertyName).CurrentValue = time;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.