0

我正在尝试找出一种使用不进行更新或删除的实体框架开发数据库模型的方法。出于分析原因,业务需求需要对系统中每条记录所做的所有更改的完整历史记录。因此,我想始终通过向数据库插入新记录来进行修改。

有没有一种干净的方法可以让实体框架做到这一点?还是我要跳过很多圈才能获得这种行为。基本模型非常简单,删除了一些东西,比如构造函数,因为它们对讨论没有太多帮助:

public class Container
{
  public Guid Id { get; private set; }
  public ICollection<Container> RelatedContainers { get; private set; }
  public ICollection<Item> Items { get; private set; }
}

public class Item
{
  public Guid Id { get; private set; }
  public string Name { get; private set; }
  public string Value { get; private set; }
}
4

1 回答 1

1

基本上你需要覆盖SaveChanges(). DbContext在您的方法中获取所有具有EntityState DeletedorModified 并设置状态的对象UnChanged

public class YourDbContext:DbContext{


  public override int SaveChanges(){
       foreach ( var ent in this.ChangeTracker
                     .Entries()
                     .Where(p =>p.State == System.Data.EntityState.Deleted             
                                     p.State == System.Data.EntityState.Modified))
        {

          ent.State   =System.Data.EntityState.Unchanged;
        }

  }

}
于 2012-08-23T03:52:57.920 回答