Недавно я узнал, что Entity Framework имеет очень простой способ сделать соединения устойчивыми в SQL Azure. Есть ли рекомендуемый способ сделать то же самое в Dapper?Как сделать Dapper упругим для SqlAzure?
ответ
Самый быстрый способ защиты от проблем подключения в 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.
- 1. Как сделать драйвер Spark упругим для перезапуска мастера?
- 2. Embedded Упругим с NodeJS
- 3. SQLAzure fulltext intermittent slow
- 4. Как сделать пакетный выбор в Dapper?
- 5. добавления смещения упругим поискового запроса
- 6. Как использовать SqlBuilder для Dapper?
- 7. Сбросить кеш для Dapper
- 8. Копирование содержимого базы данных (схемы) из одной базы данных SqlAzure в другую существующую базу данных SqlAzure
- 9. Dapper. Paging
- 10. Как добавить логику повторения SqlAzure в операции OrmLite?
- 11. удалить объекты из массива упругим поиска
- 12. Как Dapper & AseClient
- 13. Как FirstOrDefault() с Dapper
- 14. Как создать аргументы для Dapper запроса динамически
- 15. Подключение базы данных SqlAzure обычным способом
- 16. SSMA для MySQL мучительно медленно при перемещении данных в SQLAzure
- 17. цикл в R с упругим пакетом
- 18. Dapper для создания веб-службы
- 19. Как использовать Dapper с Linq
- 20. Как подключиться к SqlAzure с ошибкой Ssmse 208
- 21. Dapper - прохождение getdate как параметр
- 22. Базы данных SQLAzure (3) исчезли. как связать это с Microsoft?
- 23. Как использовать Dapper в ServiceStack
- 24. Как исправить кластер здоровья желтый с упругим поиском
- 25. Отображение перечисления Dapper
- 26. Создать соглашение для ids с использованием dapper
- 27. Dapper: Как вернуть выбранные столбцы?
- 28. Как получить SqlDataReader с Dapper?
- 29. Как десериализации DbString с Dapper
- 30. Процедура создания динамического объекта для Dapper
Dapper - это всего лишь оболочка вокруг ADO.NET; что * точно * вы подразумеваете под «make ... resilient» здесь? что вы хотите, чтобы это по-другому? –
Я хочу, чтобы все вызовы 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 будут автоматически устойчивы? –
Нет @JakobLithner, которого будет недостаточно. В этой ссылке обсуждаются отключения соединения. В нем не упоминаются временные ошибки, которые являются главной задачей. –