2014-12-08 3 views
5

Недавно я узнал, что Entity Framework имеет очень простой способ сделать соединения устойчивыми в SQL Azure. Есть ли рекомендуемый способ сделать то же самое в Dapper?Как сделать Dapper упругим для SqlAzure?

+0

Dapper - это всего лишь оболочка вокруг ADO.NET; что * точно * вы подразумеваете под «make ... resilient» здесь? что вы хотите, чтобы это по-другому? –

+2

Я хочу, чтобы все вызовы Execute и Query я делал в Dapper, чтобы выжить в небольших облачных проблемах, вызванных Azure. Следуя этой ссылке http://blogs.msdn.com/b/dotnet/archive/2013/10/17/net-framework-4-5-1-rtm-gt-start-coding.aspx, это означает, что я мог бы просто обновить мои рамки для соединений 4.5.1 и ADO.Net в среде SQL Azure будут автоматически устойчивы? –

+1

Нет @JakobLithner, которого будет недостаточно. В этой ссылке обсуждаются отключения соединения. В нем не упоминаются временные ошибки, которые являются главной задачей. –

ответ

10

Самый быстрый способ защиты от проблем подключения в C# от Azure - Microsoft Transient Fault Handling Block.

Например код ниже будет повторять до 3 раз с 1-секундными интервалами в промежутке между при попытке открыть соединение с базой данных Windows Azure SQL:

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.

Смежные вопросы