C# 保存poco EF 4.2时修改内存中的实体,无错误

C# 保存poco EF 4.2时修改内存中的实体,无错误,c#,entity-framework,poco,C#,Entity Framework,Poco,我需要临时修改内存中某个实体上的集合,而不会导致框架出现错误。我有两个实体在一起工作。实体A有一个集合,我只需要从中删除一个项目,然后向其中添加我动态创建的另一个项目。实体B使用实体A中的该项对其进行计算,但在其任何属性中都没有对其进行引用。问题是,当我去保存实体B时,它会爆炸,因为我在内存中对实体A进行了更改。我决不会试图保存实体A,框架只是发现我对其进行了更改,并抛出以下错误: 无法更改关系,因为一个或多个外键属性不可为null 我正在使用poco类并单独保存每个实体,所以我不明白为什么在保

我需要临时修改内存中某个实体上的集合,而不会导致框架出现错误。我有两个实体在一起工作。实体A有一个集合,我只需要从中删除一个项目,然后向其中添加我动态创建的另一个项目。实体B使用实体A中的该项对其进行计算,但在其任何属性中都没有对其进行引用。问题是,当我去保存实体B时,它会爆炸,因为我在内存中对实体A进行了更改。我决不会试图保存实体A,框架只是发现我对其进行了更改,并抛出以下错误:

无法更改关系,因为一个或多个外键属性不可为null

我正在使用poco类并单独保存每个实体,所以我不明白为什么在保存实体B时框架也在尝试保存实体A。如果存在差异,poco都使用EntityTypeConfiguration类连接


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

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

var aList = context.As.AsNoTracking();
使用
ObjectContext
(您不使用,但无论如何)

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

您所说的“单独保存每个实体”是什么意思?您只能调用
context.SaveChanges
,它总是保存在上下文/工作单元中修改过的所有内容。如何保存“单个”实体?
context.As.MergeOption = MergeOption.NoTracking;
var aList = context.As;