代码第一个到多个关系

时间:2012-04-03 11:37:48

标签: c# ef-code-first one-to-many

我已经定义了这样的一对多关系

    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实例已被处理,不能再用于需要连接的操作。

1 个答案:

答案 0 :(得分:1)

这可能是因为使用延迟加载。在尝试使用导航属性(ClassA)进行访问时会导致额外的数据库往返,但是您的上下文已经处理完毕。

  

延迟加载:首次读取实体时,相关数据不是   检索。但是,第一次尝试访问导航时   property,该导航属性所需的数据是   自动检索。这导致多个查询发送到   数据库中。

您可以使用 Eager Loading Include()明确加载来解决此问题。

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