保存poco EF 4.2时,修改内存中的实体而不会出错

时间:2012-09-27 10:47:14

标签: c# entity-framework poco

我需要暂时修改内存中实体的集合,而不会出现错误框架爆炸。我有两个与我合作的实体。实体A有一个集合,我只需要从中删除一个项目,并添加我动态创建的另一个项目。实体B使用来自实体A的项目进行计算,但不在其任何属性中保留对它的引用。问题是,当我去保存实体B时,由于我在实体A的内存更改,它会爆炸。我绝不想保存实体A,框架只是弄清楚我对它进行了更改并抛出了这个错误:

  

由于一个或多个外键属性是不可为空的

,因此无法更改关系

我正在使用poco类并单独保存每个实体,所以我很困惑为什么当我保存实体B时,框架也试图保存实体A.如果这样做,那么使用EntityTypeConfiguration类连接pocos

有没有办法告诉个别实体在一段时间内不跟踪自己?

1 个答案:

答案 0 :(得分:0)

您应该在不跟踪的情况下获取您的实体A.使用DbContext

var aList = context.As.AsNoTracking();

使用ObjectContext(您不使用,但无论如何)

context.As.MergeOption = MergeOption.NoTracking;
var aList = context.As;

因此,EF不会跟踪A上的任何更改,更不用说保存它们了。