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.过于耦合。

  1. 有没有推荐的框架/设计模式可以用来解决这个问题
  2. Entityframework是否具有处理此要求的功能

注意:我正在寻找能够处理对象(Car)及其多值(CarPart)对象中字段更改的东西谢谢

EF-当另一个字段正在更新时自动更新(上次更新日期)

大多数人倾向于覆盖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();
}

另外,看看

  1. AuditDb上下文
  2. 实体框架6拦截(新功能)