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

本文关键字:命令 连接 EF 何关闭 LINQ | 更新日期: 2023-09-27 17:58:06

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

 DataReader associated with this Command which must be closed first. 

因为我的查询是嵌套的:

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

如何从ElementSet加载所有元素并在使用foreach循环浏览它们之前关闭连接?

附言:使用SQL azure时,我无法在连接字符串中设置MARS,这会使服务器接受多个连接。

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

MARS不会使用多个连接,但它将允许在单个连接上进行多个并发操作。MARS最近被添加到SQL Azure中,所以你绝对应该打开它。

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

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