2016-08-02 40 views
2

讀通過LINQ的數據我有兩個相關的模型,並希望通過LINQ無法從EF

using (var ctx = new TextsContext()) 
{ 
    var data = from e in ctx.Text 
       where e.LanguageCode == lang 
       select e; 

    foreach (var d in data) 
    { 
     Debug.WriteLine(d.Language, d.Fieldname); 
    } 
} 

第一種模式

public class Language 
{ 
    public string Code { get; set; } 
    public string Country { get; set; } 
} 

第二種模式讀取

public class Text 
{ 
    public string Fieldname { get; set; } 
    public string LanguageCode { get; set; } // Add this foriegn key property 
    public string Description { get; set; } 

    // Navigation properties 
    public virtual Language Language { get; set; } 
} 

我使用首先編寫代碼(Fluent API)在兩個表之間建立關係。 當我想使用LINQ查詢,我有錯誤消息:

已經有一個用此命令, 必須先關閉相關聯的打開的DataReader。

+0

請發佈* full *例外,包括調用堆棧*和*映射代碼。你可以調用'Exception.ToString()'來獲得完整的異常。你發佈的代碼不會拋出這樣的例外,如果你只使用這個代碼 –

回答

2

我假設如果你做了一個Include()ToList()它會解決它。可能因爲linq的迭代載入延遲,它會創建另一個讀者以獲取另一個實體(Language)。

using (var ctx = new TextsContext()) 
{ 
    var data = (from e in ctx.Text.Include("Language") 
       where e.LanguageCode == lang 
       select e).ToList(); 

    foreach (var d in data) 
    { 
     Debug.WriteLine(d.Language, d.Fieldname); 
    } 
} 
+1

非常感謝,它的工作原理。 –

+0

不客氣 –