我的cshtml中有一些代码:
@model IEnumerable<Floor>
@{
var floors = Model
}
我在这一行有错误:
@foreach(在 floor_l.ShopFloors 中的 var shopfloor)
我可以在模型分配后使用 .ToList() 来解决问题。
错误的原因可能是什么?谁遇到过?
此错误偶尔出现。
我的cshtml中有一些代码:
@model IEnumerable<Floor>
@{
var floors = Model
}
我在这一行有错误:
@foreach(在 floor_l.ShopFloors 中的 var shopfloor)
我可以在模型分配后使用 .ToList() 来解决问题。
错误的原因可能是什么?谁遇到过?
此错误偶尔出现。
每个数据库连接一次只能支持一个数据读取器。您的Model
和foor_l
使用相同的连接,因此您只能同时读取其中一个。
添加.ToList()
会将数据读取器中的所有记录读取到列表中,然后关闭数据读取器。这样就可以让下一个数据读取器免费使用该连接。
小心延迟加载。如果启用了该功能,例如,如果您在循环中执行某些操作,则最终可能会出现此错误。
解决此问题的一种方法,如果您不想关闭延迟加载(并且必须记住在需要时重新打开它)是使用急切加载,您可以通过将Include()
语句添加到您的询问。例如,如果您有一个名为的实体和对 a 上的实体Contact
集合的引用,并且您想要获取您正在查询的实体,请在您的 LINQ 查询中使用它Address
Contact
Addresses
Contacts
.Include("Addresses")
这将为通过生成的查询加载的Addresses
每个加载。Contact
谨慎使用Include()
您想要使用急切加载的每个查询,因为可能会影响性能。
"MultipleActiveResultSets=True"
在连接字符串中