加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:50:20 所属栏目:百科 来源:网络整理
导读:我在Entity Framework 4中加载了对父对象的引用的麻烦.由于Lazy加载对父对象(Condition)的引用没有加载到子对象(DiscountLevel)上,所以我尝试加载它: if(!this.ConditionReference.IsLoaded) this.ConditionReference.Load(); 但这会抛出以下异常: the ent
我在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方法的执行,使得一切都按预期工作.可能有一个更优雅的解决方案,实体框架提供的功能,但这对我有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读