0

我的cshtml中有一些代码:

@model IEnumerable<Floor>
@{
    var floors = Model
}

我在这一行有错误:

@foreach(在 floor_l.ShopFloors 中的 var shopfloor)

我可以在模型分配后使用 .ToList() 来解决问题。

错误的原因可能是什么?谁遇到过?

此错误偶尔出现。

4

3 回答 3

1

每个数据库连接一次只能支持一个数据读取器。您的Modelfoor_l使用相同的连接,因此您只能同时读取其中一个。

添加.ToList()会将数据读取器中的所有记录读取到列表中,然后关闭数据读取器。这样就可以让下一个数据读取器免费使用该连接。

于 2012-06-18T12:18:52.400 回答
1

小心延迟加载。如果启用了该功能,例如,如果您在循环中执行某些操作,则最终可能会出现此错误。

解决此问题的一种方法,如果您不想关闭延迟加载(并且必须记住在需要时重新打开它)是使用急切加载,您可以通过将Include()语句添加到您的询问。例如,如果您有一个名为的实体和对 a 上的实体Contact集合的引用,并且您想要获取您正在查询的实体,请在您的 LINQ 查询中使用它AddressContactAddressesContacts

.Include("Addresses")

这将为通过生成的查询加载的Addresses每个加载。Contact谨慎使用Include()您想要使用急切加载的每个查询,因为可能会影响性能。

于 2013-05-13T18:04:36.340 回答
0

"MultipleActiveResultSets=True"在连接字符串中

于 2012-06-18T12:58:42.250 回答