Jak*_*ner 6 dapper resiliency azure-sql-database
我最近发现实体框架有一种非常简单的方法可以在SQL Azure中实现连接弹性.是否有推荐的方法在Dapper中完成相同的操作?
Luk*_*ett 12
针对Azure的C#中防止连接问题的最快方法是 Microsoft Transient Fault Handling Block.
例如,在尝试打开与Windows Azure SQL数据库的连接时,以下代码将重试最多3次,间隔为1秒:
var retryStrategy = new FixedInterval(3, TimeSpan.FromSeconds(1));
var retryPolicy =
new RetryPolicy<SqlDatabaseTransientErrorDetectionStrategy>(retryStrategy);
retryPolicy.ExecuteAction(() => myConnection.Open());
Run Code Online (Sandbox Code Playgroud)
FixedInterval 是后退政策,所以它会尝试,等待1秒,再试一次等,直到它尝试了3次.
SqlDatabaseTransientErrorDetectionStrategy只是对抛出的异常进行检查,如果它是应该重试的连接异常,它将告诉RetryPolicy再次执行该操作.如果它不是连接异常,则不会执行该操作,并且将正常抛出原始异常.
至于什么时候应该和Dapper一起使用; 您可以安全地重试打开连接和读取操作,但是要注意或重试写入操作,因为存在重复插入,尝试删除行等两次的风险.
更多详细信息,此库可以在此处找到NuGet包,其中包含Windows Azure的检测策略.
| 归档时间: |
|
| 查看次数: |
2765 次 |
| 最近记录: |