实体框架:开发不执行更新和删除的模型
Posted
技术标签:
【中文标题】实体框架:开发不执行更新和删除的模型【英文标题】: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;
【问题讨论】:
【参考方案1】:基本上你需要覆盖DbContext
中的SaveChanges()
方法。在您的方法中获取所有具有EntityState
Deleted
或Modified
的对象并设置状态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;
【讨论】:
以上是关于实体框架:开发不执行更新和删除的模型的主要内容,如果未能解决你的问题,请参考以下文章