【问题标题】:EF recovery from invalidoperationexception caused by server being downEF 从服务器宕机导致的无效操作异常中恢复
【发布时间】:2010-05-19 06:05:39
【问题描述】:

我有一个依赖 EF 的 Windows 服务,它运行良好,直到服务器出现故障。问题是服务器再次启动后,它没有自行修复,仍然抛出错误:

内部错误:执行该命令需要一个打开且可用的连接。连接的当前状态已断开。

不是很精通 EF 我不知道如何从这种情况中恢复,以及为什么会发生这种情况?以前有人遇到过这种情况吗?

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    ObjectContext 的生命周期是多久?如果您在服务的整个生命周期中使用单个 ObjectContext,则会导致此类问题。相反,您应该将 ObjectContext 生命周期缩小到更小的时间窗口,为每个工作单元创建一个新的窗口。

    【讨论】:

    • 哦……所以我不能重复使用它们。 -_-
    • 对不起,我该怎么做?我的意思是到更小的时间窗口?
    • 如果您想获得有关如何减少持有对象上下文的时间长度的具体建议,建议您在代码中发布一个问题。在有限的情况下,您将创建一个对象上下文,对数据库进行一次更改然后关闭它 - 这将是可能的最小时间窗口。
    【解决方案2】:

    here 描述的解决方案对我有用, 修改连接字符串中的连接超时

    FROM server='MySQLServer'';Integrated Security=true;初始 目录='EVConfiguration';连接超时=100 TO 服务器='MySQLServer';集成安全=true;初始 目录='EVConfiguration';连接超时=0

    【讨论】:

    • 如果有的话,您应该将超时时间增加到包含您最长请求的时间。如果您指定无限超时,则可能会出现大量未关闭的连接。
    • 我认为您将连接超时与命令超时混淆了。您不能在连接字符串上设置命令超时
    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    相关资源
    最近更新 更多