如何在NHibernate中添加Retry Logic来处理SQL Azure中的瞬态故障?

ehu*_*una 7 nhibernate azure azure-sql-database

我们有一个在Windows Azure上运行的.NET应用程序,它使用NHibernate连接到SQL Azure数据库.有时需要添加重试逻辑来处理SQL Azure中的瞬态故障,例如此处所述 -

http://social.technet.microsoft.com/wiki/contents/articles/retry-logic-for-transient-failures-in-sql-azure.aspx

有人能指点我用NHibernate做这个吗?理想情况下,我想在NHibernate级别执行此操作,而不是每次调用包装; 我能够为另一个ORM,.netTiers(http://nettiers.com)做这个,我在这里概述 -

http://blog.ehuna.org/2010/01/how_to_stop_getting_exceptions.html

我做了搜索并找到了一些使用IDbCommand接口的自定义实现提到的答案 -

拦截包含NHibernate生成的参数值的SQL语句

但我不确定它是否适用于NHibernate 3.2,我正在寻找一个可以修改的明确示例.

我怎样才能自动对SQL Azure进行NHibernate重试调用?假设有3次重试,每次重试之间等待100ms - 在3次重试之后,如果仍然失败,我们应该抛出异常.

小智 1

也许这可以帮助您: http://www.objectreference.net/post/NHibernate-and-Execution-Plans.aspx。这里有一个类,您可以下载并使用它,并进行一些覆盖。

另请检查此链接:http://elliottjorgensen.com/nhibernate-api-ref/NHibernate.Driver/SqlClientDriver.html

无论如何,我希望它能有所帮助,我正在经历类似的情况。

问候,