2012-04-03 106 views
0

我已经定义了一对多的关系这样代码首先一对多的关系

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与绑定(ClassB.Name)一个ListView

我得到的ObjectContext的实例已被处置,不能再用于需要连接的操作。

回答

1

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

延迟加载:当实体是第一读取,相关的数据是未检索 。但是,您第一次尝试访问导航 媒体资源时,该导航媒体资源所需的数据为 会自动检索。这会导致发送到 数据库的多个查询。

你也许可以解决这个问题,预先加载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

+0

非常感谢你。有效。 – Janaka 2012-04-12 09:10:34

相关问题