【发布时间】:2015-06-01 21:11:24
【问题描述】:
我在实体框架 4 中加载对父对象的引用时遇到问题。由于延迟加载对父对象的引用 (Condition) 未加载到子对象 (DiscountLevel),所以我尝试加载它与:
if(!this.ConditionReference.IsLoaded) this.ConditionReference.Load();
但这会引发以下异常:
无法加载实体引用,因为它未附加到对象上下文
因此,如果我尝试将现有子对象 (DiscountLevel) 附加到对象上下文(然后加载父引用):
context.AttachTo("tblDiscountLevel", this);
我得到以下异常:
ObjectStateManager 中已存在具有相同键的对象。现有对象处于分离状态。只有处于添加状态的对象才能再次添加到 ObjectStateManager 中。
我觉得我首先做错了什么,但我不知道是什么。因此,非常感谢有关此主题的所有帮助。如果您需要更多信息,请告诉我!
【问题讨论】:
-
你试过
Include查询中的父对象吗?见:stackoverflow.com/questions/19319116/… -
我已尝试包含父级,但不会加载参考。也许我做错了什么...
context.tblDiscountLevel.Include("Condition").Where(lv => lv.LevelDiscountID == this.LevelDiscountID ).ToList() -
您使用的是
code first还是edmx?首先使用代码时,父级的导航属性应为virtual,并包含一些命名约定以使其开箱即用。如果您使用的是 edmx,我的经验不足以在这里为您提供帮助。 -
我正在使用 edmx 文件:/ 我查了一下,父导航属性不是虚拟的。改变也没有任何区别
标签: c# entity-framework