如何用LINQ / EF关闭命令连接

时间:2011-05-29 13:17:35

标签: c# entity-framework ado.net

使用Azure和EF我收到错误消息:

 DataReader associated with this Command which must be closed first. 

因为我的查询是嵌套的:

foreach (Element s in ElementSet.All()) {
   if (somecondition) {  
     ElementSet.Add() 
   }
}

如何在使用foreach循环访问ElementSet之前加载ElementSet中的所有元素并关闭连接?

P.S。:显然使用SQL azure我不能在连接字符串中设置MARS,这会使服务器接受多个连接。

1 个答案:

答案 0 :(得分:2)

MARS不会使用多个连接,但它允许通过单个连接进行多个并发操作。 MARS was recently added to SQL Azure所以你一定要开启它。

如果要强制EF加载所有实体,请立即在查询中调用ToList

foreach (Element s in ElementSet.All().ToList()) {
   if (somecondition) {  
     ElementSet.Add() 
   }
}