获取此错误后:mysqlexception:已经有一个与此连接关联的打开的datareader,必须先关闭它。我无法请求或获取结果集,因为我正在查询,而ef还在懒洋洋地加载我以前请求的其他东西。找到了许多可能的解决方案来解决这个问题,我在下面给出了答案。
ao218c7q1#
如果在ef配置中没有提到类型加载,默认情况下ef将使用延迟加载。有多种方法可以克服“连接是开放的问题”:通过将mars添加到ef连接字符串中,请在跳转之前阅读此内容。使用'using'语句,但为此,每次释放实体对象时都需要创建一个新的实体对象。将结果转换为泛型类型或本地对象类型在我的例子中,我将其转换为tolist(),这有助于解决我的问题,并且我能够从上下文请求一个新的结果集。我有一个基类,它为我提供了context对象,这就是为什么每次我想查询上下文时,我没有使用using语句来创建新的上下文。随时编辑任何错误,仍然学习ef及其行为。
1条答案
按热度按时间ao218c7q1#
如果在ef配置中没有提到类型加载,默认情况下ef将使用延迟加载。
有多种方法可以克服“连接是开放的问题”:
通过将mars添加到ef连接字符串中,请在跳转之前阅读此内容。
使用'using'语句,但为此,每次释放实体对象时都需要创建一个新的实体对象。
将结果转换为泛型类型或本地对象类型在我的例子中,我将其转换为tolist(),这有助于解决我的问题,并且我能够从上下文请求一个新的结果集。
我有一个基类,它为我提供了context对象,这就是为什么每次我想查询上下文时,我没有使用using语句来创建新的上下文。
随时编辑任何错误,仍然学习ef及其行为。