我有两个相关模型,想通过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 必须先关闭。
答案 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);
}
}