以下代码中的错误在哪里? 已经有一个与此命令关联的打开的DataReader,必须先关闭它。
“执行命令定义时发生错误。有关详细信息,请参阅内部异常。”
var cat = from c in db.Question select c;
foreach (Questions question in cat) {
Console.WriteLine("{0}", question.tittle);
Console.WriteLine("{0}", question.deskripsi);
Console.WriteLine("{0}", question.id_question);
**foreach (Categories p in question.Categories)**
{
Console.WriteLine("{0}", p.id_kategori);
Console.WriteLine("{0}", p.nama_kategori);
}
}
答案 0 :(得分:7)
您可能未在配置文件中启用多个活动结果集(MARS)。 Here是有关原因和方式的一些细节,但它总是需要添加条目
"MultipleActiveResultSets=True"
连接字符串。
然而,除了激活MARS之外,最好是急切加载Categories
:
from c in db.Question.Include(q => q.Categories) select c
因为在你的代码中,foreach
的每次迭代都会执行一个延迟加载类别的查询(也称为 n + 1问题)。