首页 > 解决方案 > 如何解决实体框架打开 DataReader 问题

问题描述

收到此错误后:

MySqlException:已经有一个打开的 DataReader 与此 Connection 关联,必须先关闭。

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

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

标签: mysqlentity-frameworkdatabase-connectiondatareader

解决方案


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

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

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

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

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


推荐阅读