无法从ef

时间:2016-08-02 13:58:27

标签: c# entity-framework linq

我有两个相关模型,想通过linq阅读

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   必须先关闭。

1 个答案:

答案 0 :(得分: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);
    }
}