防止C#中针对Azure的连接问题的最快方法是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());
FixedInterval
是退避策略,所以它会尝试,等待1秒,再试一次等,直到尝试3次。
SqlDatabaseTransientErrorDetectionStrategy
只是检查抛出的异常,如果它是应该重试的连接异常,它将告诉RetryPolicy
再次执行该操作。如果它不是连接异常,则不会执行该操作,并且将正常抛出原始异常。
至于什么时候应该和Dapper一起使用;您可以安全地重试打开连接和读取操作,但是要注意或重试写入操作,因为存在重复插入,尝试删除行等两次的风险。