先编码一对多关系
本文关键字:关系 一对多 编码 | 更新日期: 2023-09-27 18:29:55
我定义了一对多关系,就像这个
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;}
}
在我使用bind(ClassB.Name)将classA绑定到Listview之前,工作正常
我得到ObjectContext实例已被释放,不能再用于需要连接的操作。
这可能是因为使用了懒惰加载。这会导致在尝试使用导航属性(ClassA)访问数据库时额外往返数据库,但您的上下文已被释放。
懒惰加载:当第一次读取实体时,相关数据不会检索到。但是,当您第一次尝试访问导航时属性,该导航属性所需的数据为自动检索。这将导致多个查询发送到数据库
您可能可以使用Eager LoadingInclude()
或Explicit Loading来解决此问题。
var values = context.ClassB.Include("ClassA").ToList()
http://www.asp.net/web-forms/tutorials/continuing-with-ef/maximizing-performance-with-the-entity-framework-in-an-asp-net-web-application