Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 已经有一个开放的DataReader_Sql Server_Entity Framework - Fatal编程技术网

Sql server 已经有一个开放的DataReader

Sql server 已经有一个开放的DataReader,sql-server,entity-framework,Sql Server,Entity Framework,我的cshtml中有一些代码: @model IEnumerable<Floor> @{ var floors = Model } @model IEnumerable @{ var地板=模型 } 我在这一行有个错误: @foreach(楼层中的可变车间) 我可以在模型赋值后使用.ToList()来解决这个问题 错误的原因可能是什么?谁面对过 此错误偶尔出现。每个数据库连接一次只能支持一个数据读取器。您的Model和foor\l使用相同的连接,因此您只能同时读取其中一个

我的cshtml中有一些代码:

@model IEnumerable<Floor>
@{
    var floors = Model
}
@model IEnumerable
@{
var地板=模型
}
我在这一行有个错误:

@foreach(楼层中的可变车间)

我可以在模型赋值后使用.ToList()来解决这个问题

错误的原因可能是什么?谁面对过


此错误偶尔出现。

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


添加
.ToList()
将从数据读取器读取所有记录到列表中,然后关闭数据读取器。这使得连接可以自由地供下一个数据读取器使用。

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

如果您不想关闭延迟加载(并且如果需要,必须记住再次打开它),解决这个问题的一种方法是使用渴望加载,您可以通过向查询中添加
Include()
语句来实现。例如,如果您有一个名为
联系人
的实体,并且在
联系人
上有一个对
地址
实体集合的引用,并且您希望获得要查询的
联系人
地址,请在LINQ查询中使用此项

.Include("Addresses")
这将通过生成的查询为每个加载的
联系人
加载
地址
。不过,对于每个要使用“急切加载”的查询,请谨慎使用
Include()
,因为可能会影响性能

似乎是的复制品,看一看,因为我相信这个问题的答案适用于你:)