我需要暂时修改内存中实体的集合,而不会出现错误框架爆炸。我有两个与我合作的实体。实体A有一个集合,我只需要从中删除一个项目,并添加我动态创建的另一个项目。实体B使用来自实体A的项目进行计算,但不在其任何属性中保留对它的引用。问题是,当我去保存实体B时,由于我在实体A的内存更改,它会爆炸。我绝不想保存实体A,框架只是弄清楚我对它进行了更改并抛出了这个错误:
由于一个或多个外键属性是不可为空的
,因此无法更改关系
我正在使用poco类并单独保存每个实体,所以我很困惑为什么当我保存实体B时,框架也试图保存实体A.如果这样做,那么使用EntityTypeConfiguration类连接pocos
有没有办法告诉个别实体在一段时间内不跟踪自己?
答案 0 :(得分:0)
您应该在不跟踪的情况下获取您的实体A.使用DbContext
:
var aList = context.As.AsNoTracking();
使用ObjectContext
(您不使用,但无论如何)
context.As.MergeOption = MergeOption.NoTracking;
var aList = context.As;
因此,EF不会跟踪A
上的任何更改,更不用说保存它们了。