实体框架4加载引用异常
本文关键字:引用 异常 加载 框架 实体 | 更新日期: 2023-09-27 17:51:17
我在实体框架4中加载引用到父对象时遇到了麻烦。由于惰性加载对父对象(Condition)的引用没有加载到子对象(DiscountLevel)上,所以我尝试用:
加载它if(!this.ConditionReference.IsLoaded) this.ConditionReference.Load();
但是这会抛出以下异常:
无法加载实体引用,因为它没有附加到objectcontext
所以如果我尝试将现有的子对象(DiscountLevel)附加到对象上下文(然后加载父引用):
context.AttachTo("tblDiscountLevel", this);
我得到以下异常:
ObjectStateManager中已经存在具有相同key的对象。现有对象处于分离状态。对象只有处于已添加状态时,才能再次添加到ObjectStateManager中。
我觉得我一开始就做错了什么,但我不知道是什么。所以在这个话题上的每一个帮助都是非常感谢的。如果你需要更多的信息,请告诉我!
我偶然发现了这个问题,它不需要对上面的代码做任何事情:打折级别中有一些计算,如果过早调用它们,就会失败——在这种情况下,是在从DB初始加载时。这导致Child对象没有被正确初始化——看起来就像没有从外部加载一样。
实现一个简单的bool变量,在初始加载时抑制onchange方法的执行,使一切按预期工作。可能有一个更优雅的解决方案,具有实体框架提供的功能,但这对我来说是有效的。