如何解决实体框架打开 DataReader 问题

Posted

技术标签:

【中文标题】如何解决实体框架打开 DataReader 问题【英文标题】:How to address Entity Framework Open DataReader Issue 【发布时间】:2018-11-28 06:47:30 【问题描述】:

收到此错误后:

mysqlException: 已经有一个打开的 DataReader 关联 此连接必须先关闭。

我无法请求或获取结果集,因为我正在查询,而 EF 仍在延迟加载我之前请求的其他内容。

找到了许多可能的解决方案来解决这个问题,我在下面分享了这些解决方案。

【问题讨论】:

【参考方案1】:

如果您在 EF 配置中未提及类型 loading,则 EF 将默认使用延迟加载。

有多种方法可以解决“连接未解决问题”:

    通过将MARS 添加到您的 EF 连接字符串中,请同时阅读this,然后再开始阅读。 使用“USING”语句,但为此您需要在每次释放时创建一个新的实体对象。 在我的情况下,将您的结果转换为泛型类型或本地对象类型,我将其转换为 ToList(),这有助于解决我的问题,并且我能够从上下文中请求新的结果集。

我有一个为我提供上下文对象的基类,这就是为什么我每次想查询上下文时都没有使用 Using 语句来创建新上下文的原因。

随时编辑任何错误,仍在了解 EF 及其行为。

【讨论】:

以上是关于如何解决实体框架打开 DataReader 问题的主要内容,如果未能解决你的问题,请参考以下文章

实体框架运行时错误 - 已经有一个打开的 DataReader 与此命令关联,必须先关闭

ASP.NET MVC 项目中 ADO.NET 实体模型的已打开 DataReader

DataSet和DataReader问题

已经打开的 DataReader 的连接字符串出现问题

由于我的查询,DataReader 仍然打开

我应该如何跟踪打开的 DataReader?