Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
C# 遍历IQueryable<;T>;访问实体框架6.4.4中的导航属性会引发异常_C#_Mysql_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 遍历IQueryable<;T>;访问实体框架6.4.4中的导航属性会引发异常

C# 遍历IQueryable<;T>;访问实体框架6.4.4中的导航属性会引发异常,c#,mysql,entity-framework,entity-framework-6,C#,Mysql,Entity Framework,Entity Framework 6,在从EF 6.1.3更新到6.4.4之后,所有迭代IQueryable结果并访问导航属性(延迟加载)的my循环都会引发以下异常: 已存在与此连接关联的打开的DataReader,必须先关闭该连接 我有以下模型和示例代码: 公共课预订 { public int BookingId{get;set;} 公共日期时间到达{get;set;} 公共日期时间出发{get;set;} 公共虚拟来宾MainGuest{get;set;} } 公务舱客人 { public int GuestId{get;set

在从EF 6.1.3更新到6.4.4之后,所有迭代IQueryable结果并访问导航属性(延迟加载)的my循环都会引发以下异常:

已存在与此连接关联的打开的DataReader,必须先关闭该连接

我有以下模型和示例代码:

公共课预订
{
public int BookingId{get;set;}
公共日期时间到达{get;set;}
公共日期时间出发{get;set;}
公共虚拟来宾MainGuest{get;set;}
}
公务舱客人
{
public int GuestId{get;set;}
公共字符串名称{get;set;}
公共字符串名{get;set;}
}
使用(var context=new HotelContext())
{
var cBookings=context.Bookings.Where(b=>b.maingest!=null);
foreach(在cBookings中的var cBooking)
{
//自EF 6.4.4起
//MySqlException:已经有一个与此连接关联的打开的DataReader,必须先关闭它。
Console.WriteLine(cBooking.maingest.Name);
}
}
在EF 6.1.3中,IQueryable结果的所有项目(在第一次访问时加载)和循环按预期工作。 是否有办法使行为在EF 6.4.4中像EF 6.1.3中那样起作用? 或者我必须更改使用这种循环的所有代码行吗


有人能告诉我为什么/何时和何地发生了变化吗?我还尝试更新到EF6.2,以查看行为是否仅在EF 6.4.4中发生了变化,但在EF 6.2中也会引发异常。

不确定为什么在以前的版本中会发生异常,但异常是合理的-同时列举了未匹配的集合数据读取器确实仍然处于打开状态。然后尝试获取导航属性,这需要另一个数据库查询。更好地使用Include以避免循环中每个属性访问的单独查询。