c# – 实体框架4加载参考异常

前端之家收集整理的这篇文章主要介绍了c# – 实体框架4加载参考异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Entity Framework 4中加载了对父对象的引用的麻烦.由于Lazy加载对父对象(Condition)的引用没有加载到子对象(DiscountLevel)上,所以我尝试加载它:
if(!this.ConditionReference.IsLoaded) this.ConditionReference.Load();

但这会抛出以下异常:

the entity reference could not be loaded because it is not attached to an objectcontext

因此,如果我尝试将现有的子对象(DiscountLevel)附加到对象上下文中(然后再加载父参考):

context.AttachTo("tblDiscountLevel",this);

我得到以下例外:

An object with the same key already exists in the ObjectStateManager. The existing object is in the Detached state. An object can only be added to the ObjectStateManager again if it is in the added state.

我觉得我第一次做错了,但我无法弄明白什么.所以对这个话题的每一个帮助都非常感激.如果您需要更多信息,请告诉我们!

解决方法

我偶然发现了这个问题,并没有对上面的代码做任何事情:在DiscountLevel中的各种覆盖的OnChange方法中有一些计算如果被调用太早就失败 – 在这种情况下,初始加载DB.这导致Child对象没有被正确的初始化 – 看起来像从外面没有加载.

实现一个简单的bool变量,它在初始加载时抑制OnChange方法的执行,使得一切都按预期工作.可能有一个更优雅的解决方案,实体框架提供的功能,但这对我有用.

猜你在找的C#相关文章