use*_*811 2 c# linq datareader
以下代码中的错误在哪里?已经有一个与此命令关联的打开的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);
}
}
Run Code Online (Sandbox Code Playgroud)
您可能未在配置文件中启用多个活动结果集(MARS).以下是有关原因和方法的一些细节,但它总是需要添加条目
"MultipleActiveResultSets=True"
Run Code Online (Sandbox Code Playgroud)
到连接字符串.
但是,除了激活MARS之外,最好还是急于加载Categories:
from c in db.Question.Include(q => q.Categories) select c
Run Code Online (Sandbox Code Playgroud)
因为在你的代码中,每次迭代foreach都会执行一个查询来延迟加载类别(也称为n + 1问题).