如何在使用Linq到SQl自动丢失连接时重新连接丢失的连接

时间:2009-11-27 22:43:15

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

我不想封装try catch块中的每个调用

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

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

如果没有,为什么不呢!

编辑:Linq to Entity有吗?

编辑:我正在使用Microsoft SQL Azure,它会丢弃很多连接。

编辑:我在每次调用db时打开一个新连接。所以它不是我打开连接。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

从此msdn blog

  

最好在更短的生命周期内犯错误 - 一个工作单元甚至是无状态服务器的单一请求都是很好的模式。