如何关闭与LINQ / EF的命令连接

问题描述

| 使用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() 
   }
}