我想添加一个列,用于在将记录保存到磁盘时存储当前的日期时间。实现这一目标的最佳方法是什么?
我知道这不是一个非常复杂的问题,但我想知道 EF 是否有任何最佳实践或任何功能可以简化任务。
例如:
- 有没有什么方法可以将该字段的逻辑包含在表类中,以便在保存到磁盘时自动更新?
- 修改或保存对象时是否需要捕获任何事件?
一种选择是创建存储库层并实现您自己的 SaveChanges
public void SaveChanges()
{
foreach (var entry in Context.ChangeTracker.Entries<ICreatedAt>().Where(x => x.State == EntityState.Added && x.Entity.CreatedAt == default(DateTime)))
entry.Entity.CreatedAt = DateTime.Now;
foreach (var entry in Context.ChangeTracker.Entries<ICreatedBy>().Where(x => x.State == EntityState.Added && x.Entity.CreatedBy == null))
entry.Entity.CreatedBy = ContextManager.CurrentUser;
foreach (var entry in Context.ChangeTracker.Entries<IModifiedAt>().Where(x => x.State == EntityState.Modified))
entry.Entity.ModifiedAt = DateTime.Now;
foreach (var entry in Context.ChangeTracker.Entries<IModifiedBy>().Where(x => x.State == EntityState.Modified))
entry.Entity.ModifiedBy = ContextManager.CurrentUser;
Context.SaveChanges();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)