我的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 查询中使用它AddressContactAddressesContacts
.Include("Addresses")
这将为通过生成的查询加载的Addresses每个加载。Contact谨慎使用Include()您想要使用急切加载的每个查询,因为可能会影响性能。
"MultipleActiveResultSets=True"在连接字符串中