azure-sql-database - 如何使Dapper对SqlAzure具有弹性?

标签 azure-sql-database dapper resiliency

我最近发现,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/

相关文章:

sql-server - 如何等待 SQL Server 数据库副本

日志分析工作区中的 Azure DB 同步日志

javascript - 使用携带另一个数组的对象异步循环数组

azure - Azure SQL 数据库是否支持内存优化表?

.net - 使用 dapper 插入一对多实体

java - 缓解 Hadoop 的跟腱问题

.net - 使用 Dapper ORM SELECT * FROM X WHERE id IN (...)

Dapper 构建包含相同对象类型的对象树

ReactJS 应用程序 - 弹性 VS 快速失败

azure - 可用区及其在 Azure 中的缺失