我已经定义了这样的一对多关系
public class ClassA
{
[Key, ForeignKey("ClassB"), Column(Order = 0)]
public int ClassB_ID { get; set; }
[Key, Column(Order=1)]
public string name { get; set; }
public bool IsApproved { get; set; }
public virtual ClassB ClassB { get; set; }
}
public class ClassB
{
[Key]
public int ID{get;set;}
public string Name{get;set;}
public virtual ICollection<ClassA> classAs{get;set;}
}
正常工作,直到我将classA绑定到带有Bind(ClassB.Name)的Listview
我得到了ObjectContext实例已被处理,不能再用于需要连接的操作。
答案 0 :(得分:1)
这可能是因为使用延迟加载。在尝试使用导航属性(ClassA)进行访问时会导致额外的数据库往返,但是您的上下文已经处理完毕。
延迟加载:首次读取实体时,相关数据不是 检索。但是,第一次尝试访问导航时 property,该导航属性所需的数据是 自动检索。这导致多个查询发送到 数据库中。
您可以使用 Eager Loading Include()
或明确加载来解决此问题。
var values = context.ClassB.Include("ClassA").ToList()