我有一个从EF 4.0分离的POCO代理(分离的意思是ObjectContext已经配置)。在分离的POCO代理上设置相关的实体ID
我有一个属性MyRelatedEntityId,它是导航属性MyRelatedEntity的FK。
碰巧,我知道我想为MyRelatedEntityId设置什么值,所以我尝试手动设置....但分离的POCO代理引发了ObjectContext已经处理的异常。
我该怎么做,或者是否有解决方法?
我有一个从EF 4.0分离的POCO代理(分离的意思是ObjectContext已经配置)。在分离的POCO代理上设置相关的实体ID
我有一个属性MyRelatedEntityId,它是导航属性MyRelatedEntity的FK。
碰巧,我知道我想为MyRelatedEntityId设置什么值,所以我尝试手动设置....但分离的POCO代理引发了ObjectContext已经处理的异常。
我该怎么做,或者是否有解决方法?
您必须关闭延迟加载。我认为一旦你设置了FK属性,动态代理将尝试加载相关的实体,并且由于处置上下文而失败。
编辑:
,因为正如你所说延迟加载不应该被触发我刚查了这个问题。问题是使用Fixup方法建立双向关系的自动生成的代码。如果您加载了以前的相关实体并且您更改了FK,则会将相关实体设置为空。这会触发尝试从前一个相关实体的子项中移除当前实体的修复方法。如果你在处理上下文之前没有加载它们,你会得到一个异常。只要尝试调试包括生成的代码即可。
该解决方案可以是:
我不想关闭延迟加载。我没有试图设置导航属性,只是实际的FK Id – Jeff 2011-03-15 10:47:29
我添加了一些代码,一旦ObjectContext处置就关闭延迟加载......但是直到那时才开启。 – Jeff 2011-03-21 16:19:01