【问题标题】:How to reconnect to a lost connection when it is lost using Linq to SQl automagically如何使用 Linq to SQl 自动重新连接到丢失的连接
【发布时间】:2009-11-27 22:43:14
【问题描述】:

我不想将每个调用都封装在 try catch 块中

是否有我可以订阅的事件,当连接丢失或超时时,我可以重新连接..

或某种不检查每个 linq 查询的方法。

如果不是,为什么不呢!

编辑:Linq to Entity 有这个吗?

编辑:我使用的是 Microsoft SQL Azure,它会断开很多连接。

编辑:我在每次调用数据库时都会打开一个新连接。所以不是我让连接保持打开状态。

【问题讨论】:

  • + 这也是我在 LINQ 中缺少的东西之一。与网络维护不善的环境相关

标签: c# .net sql-server linq-to-sql azure-sql-database


【解决方案1】:

即使有这样的事件(不确定)你仍然不能依赖它。网络连接可能会突然中断,数据库引擎忙于执行其他查询,超时总是可能的。不管是什么原因,最好直接观察查询是成功还是失败。

【讨论】:

    【解决方案2】:

    您可以考虑使用 writing your own LINQ provider(使用现有的大部分功能)来添加此功能。结果可能比每次都处理异常要少。

    【讨论】:

      【解决方案3】:

      你为什么得到这么多滴?您是否长时间挂在数据上下文对象上?建造一个很便宜,所以当你开始一个新的工作单元时,只需建造一个新的。

      来自msdn blog

      最好在生命周期较短的情况下犯错 - 一个工作单元甚至是对无状态服务器的单个请求都是很好的开始模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-24
        • 1970-01-01
        • 2014-04-08
        • 2022-01-20
        • 2020-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多