问题描述
|
使用Azure和EF时,我收到错误消息:
DataReader associated with this Command which must be closed first.
因为我的查询是嵌套的:
foreach (Element s in ElementSet.All()) {
if (somecondition) {
ElementSet.Add()
}
}
在使用foreach遍历所有Element之前,如何从ElementSet中加载所有Elements并关闭连接?
P.S .:显然,使用sql Azure时,我无法在连接字符串中设置MARS,这会使服务器接受多个连接。
解决方法
MARS将不使用多个连接,但将允许通过单个连接执行多个并发操作。 MARS是最近添加到SQL Azure的,因此您绝对应该打开它。
如果要强制EF加载所有实体,请立即在查询中调用
ToList
。
foreach (Element s in ElementSet.All().ToList()) {
if (somecondition) {
ElementSet.Add()
}
}