Как убедиться, что сервер базы данных всегда доступен при использовании Entity Framework?

#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 
        });
  

И да, как предложено в комментариях, для этого есть централизованное расположение.