2012-04-03 148 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

相關問題