时间:2011-01-06 17:00:03

标签: .net linq-to-sql azure

3 个答案:

答案 0 :(得分:1)

我认为没有必要在这个问题上变得复杂。将整个东西包裹在try catch中,将其包裹一段时间<重试计数,你就完成了。

如果你想以不同的方式处理它们,你可以获得更大的智能和陷阱来处理不同类型的错误,如果它是真正的数据错误,则无需重试。

确保您仍然跟踪每个异常,以跟踪除超时之外的其他错误。

答案 1 :(得分:0)

您可以查看面向方面编程(AOP)框架,以最小的努力管理重试逻辑。一个这样的框架是AspectF,它松散地实现了AOP原则。它易于理解和使用。

答案 2 :(得分:0)

基本原则是您重试因任何可能不再成立的原因而失败的任何事务。因此,如果事务由于死锁或与数据库服务器的错误连接而失败,则应在每次重试之间使用排序休眠重试几次。 这完全取决于您的交易定义明确

根据您的逻辑,您可以在“页面请求级别”实施重试。

  • 这取决于重做页面请求所做的工作是否安全,或者是否要求页面请求完全进入数据库事务。
  • 还要考虑一下你在服务器上的内存状态。
  • 添加到页面处理管道的HttpHander应该能够为所有页面执行此操作

如果您没有定义明确的事务,我认为您的代码中没有任何“魔法可以主导”来对其进行排序。

如果你没有使用任何事务,你可以尝试编写所有的sql,这样可以安全地运行它多次,然后只需要一个命令对象的自定义子类,在需要时可以恢复。