先编码一对多关系

本文关键字:关系 一对多 编码 | 更新日期: 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