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