【问题标题】:Entity Framework: Developing a Model that does not do Updates and Deletes实体框架:开发不执行更新和删除的模型
【发布时间】:2012-08-23 02:54:59
【问题描述】:

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

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

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; }
}

【问题讨论】:

    标签: entity-framework orm ef-code-first


    【解决方案1】:

    基本上你需要覆盖DbContext 中的SaveChanges() 方法。在您的方法中获取所有具有EntityState DeletedModified 的对象并设置状态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;
            }
    
      }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多