2012-07-20 64 views
0

我有以下查詢通過包容性的日期,得到的結果:LINQ查詢:獲取的所有領域,包括外鍵

var q = from x in db.TableX 
        where x.Timestamp.CompareTo(fromDate) >= 0 
         && x.Timestamp.CompareTo(toDate) <= 0 
        select x; 

我的TableX有一個以上的外鍵。然而,當我調試時,我只看到其中一個提取,而其他所有的鍵都是空的,即使我在數據庫中看到它們不是空的,並且ID與它們的外部表連接。

public class TableX 
    {   
     public int Id { get; set; } 
     public string str1{ get; set; } 
     public Table2 t1{ get; set; } 
     public Table3 t2{ get; set; } 
     public Table4 t3{ get; set; } 
     public Table5 t4{ get; set; } 
     public Tablet5 t5{ get; set; } 
     } 
+0

你可以發佈你的TableX類嗎? – 2012-07-20 03:30:54

+0

@Jayantha:我剛剛做到了。 – 2012-07-20 03:35:45

回答

1

Sinse您使用延遲加載,你需要定義導航屬性爲虛擬的,你需要啓用代理的創建,使EF可以圍繞你的類的代理,並覆蓋這些屬性在需要時加載。

public class TableX 
    {   
     public int Id { get; set; } 
     public string str1{ get; set; } 
     public virtual Table2 t1{ get; set; } 
     public virtual Table3 t2{ get; set; } 
     public virtual Table4 t3{ get; set; } 
     public virtual Table5 t4{ get; set; } 
     public virtual Tablet5 t5{ get; set; } 
    } 
+0

懶加載默認?我該如何改變它? – 2012-07-20 03:42:40

+0

謝謝你,這工作。 – 2012-07-20 03:45:26

+0

'db.Configuration.LazyLoadingEnabled = true;'好極了! – 2012-07-20 03:46:49