#c# #sql-server #entity-framework
#c# #sql-сервер #entity-framework
Вопрос:
Я использую Entity Framework в VS2015, и я хотел убедиться, что каждый раз, когда я получаю / удаляю данные из объектов, сервер базы данных всегда находится в хорошем состоянии соединения.
Я знаю некоторые способы обработки исключения, но есть ли лучший способ, при котором мне не нужно добавлять try catch к каждой функции? Спасибо.
Комментарии:
1. Вместо добавления try-catch в каждую функцию, вы можете настроить глобальный обработчик исключений для обработки сбоя подключения к базе данных и выполнения повторных попыток и т. Д.
2. заплатите много денег за соглашения об уровне обслуживания со 100% доступностью — но это, вероятно, не то, о чем вы просите 🙂 Вам не нужно добавлять try-catch для каждой функции. Поиск обработчиков глобальных / необработанных исключений
3. хороший способ . Спасибо, и я постараюсь
Ответ №1:
Для одного из наших проектов мы использовали Polly для обработки временных ошибок при подключении к базе данных, и нам это понравилось.
Polly — это библиотека .NET, которая позволяет разработчикам свободно и потокобезопасно выражать временные политики обработки исключений и сбоев, такие как повторная попытка, повторная попытка навсегда, ожидание и повторная попытка или автоматический выключатель.
Мы настроили Polly для обработки исключения при сбое соединения и повторили его в нашем случае
// Retry multiple times, calling an action on each retry
// with the current exception and retry count Policy
.Handle<ExceptionIWAntToHandle>()
.Retry(3, (exception, retryCount) =>
{
// do something
});
И да, как предложено в комментариях, для этого есть централизованное расположение.