我最近发现,Entity Framework是一种非常简单的方法,可以使连接在SQL Azure中具有弹性。在Dapper中是否有推荐的方法来完成相同的任务?
最佳答案
防止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中使用它;您可以安全地重试打开连接和读取操作,但是请注意或重试写入操作,因为存在重复插入,尝试两次删除一行的风险。
更详细的here,可以作为NuGet Package here找到,该库包含Windows Azure的检测策略。
关于azure-sql-database - 如何使Dapper对SqlAzure具有弹性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357269/