【问题标题】:bug in EF 4.0 after disconnected from remote SQL server?与远程 SQL 服务器断开连接后,EF 4.0 中的错误?
【发布时间】:2011-03-24 08:57:01
【问题描述】:

我发现 EF 4.0 在 web 服务器与远程 sql server 断开连接并重新连接后会抛出异常“远程主机强制关闭现有连接”。 例如,我写了下面的代码:

using (SparePartEntities aa = new SparePartEntities())
{
  var bb = aa.TS_SYS_User.ToArray();
}

首先,我在网页中运行代码,结果正常。
然后我断开网络连接并重新连接。
当我刷新 asp.net 页面时,会抛出异常“远程主机强制关闭现有连接”。
我发现在 EF 1.0 中可以吗?怎么了?

【问题讨论】:

    标签: .net entity-framework ado.net


    【解决方案1】:

    这不是 EF 中的错误。这是使用连接池时众所周知的行为。问题是连接池保存打开的连接,这些连接被重用于后续的数据库访问。但是,如果您断开与网络的连接,这些连接就会出现故障。下次使用该连接将引发上述异常。

    【讨论】:

    • 感谢您的回复。但据我所知,连接池的处理方式与任何其他 ADO.NET 应用程序一样。实体连接是否仍使用带有传统连接字符串的传统数据库连接或连接池?如果是连接池,如何控制呢?谢谢
    • EF 在内部使用 ADO.NET。连接池在连接字符串中控制,例如由SqlConnection 类控制,该类具有ClearPool 等方法。处理可能取决于 DBMS 的类型。无论如何,这可以作为任何其他异常处理。简直就是意料之外的失败。如果您预计此类失败,请实施重试机制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2021-01-13
    • 2021-04-23
    相关资源
    最近更新 更多