EF-当另一个字段正在更新时自动更新(上次更新日期)
本文关键字:更新 日期 另一个 字段 EF- | 更新日期: 2023-09-27 18:25:09
假设我有以下对象
public class Car{
public int id;
public string name;
public string color;
publid DateTime LastUpdateDate;
}
public class CarPart{
public int id;
public string name;
public string color;
}
每当有人更新任何字段时,我都希望更新LastUpdateDate字段
我最糟糕的设计是写下面这样的
public void setName(string name){
this.name=name;
this.LastUpdateDate = DateTime.now;
}
a。类是自动生成的,我必须维护一个分部
b.过于耦合。
- 有没有推荐的框架/设计模式可以用来解决这个问题
- Entityframework是否具有处理此要求的功能
注意:我正在寻找能够处理对象(Car)及其多值(CarPart)对象中字段更改的东西谢谢
大多数人倾向于覆盖Context的SaveChanges()
方法进行审计。
首先创建一个IAuditable
接口,并将其应用于所有要审计的实体:
public interface IAuditable
{
public DateTime? LastUpdateDate { get; set; }
}
然后在您的Context
:中
public override int SaveChanges()
{
var entries = ChangeTracker.Entries()
.Where(e => e.State == EntityState.Modified);
foreach (var entry in entries)
{
var auditableEntity = entry.Entity as IAuditable;
if (auditableEntity != null)
auditableEntity.LastUpdateDate = DateTime.UtcNow;
}
return base.SaveChanges();
}
另外,看看
- AuditDb上下文
- 实体框架6拦截(新功能)