Есть ли в Entity Framework Core устойчивость подключения, настроенная по умолчанию? - PullRequest
0 голосов
/ 26 апреля 2020

Я читаю в документации по отказоустойчивости соединений в Entity Framework Core и узнал, что отказоустойчивость соединений можно настроить в ASP. NET Core при настройке службы:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<PicnicContext>(
        options => options.UseSqlServer(
            "<connection string>",
            providerOptions => providerOptions.EnableRetryOnFailure()));
}

Я заметил, что для других служб, таких как Azure Клиент поиска, механизмы повтора включены по умолчанию. Это также относится и к Entity Framework Core (3.1.3), или мне нужно явно вызвать providerOptions => providerOptions.EnableRetryOnFailure()?

Документация SqlServerDbContextOptionsBuilder не предоставляет подробных сведений о какие значения по умолчанию.

1 Ответ

1 голос
/ 26 апреля 2020

Функциональность повторной попытки при сбое реализуется через SqlServerRetryingExecutionStrategy. Вызов EnableRetryOnFailure в основном настроит эту стратегию как стратегию выполнения.

По умолчанию Entity Framework Core не будет использовать стратегию выполнения. Вернее, стратегия выполнения по умолчанию - NoopExecutionStrategy (переименовывается в NonRetryingExecutionStrategy в EF Core 5), которая ничего не делает.

Так что нет, по умолчанию нет повторите попытку. И это, как правило, осознанный выбор не делать автоматические повторные попытки. По умолчанию запрос просто не выполняется, и ошибка будет всплывать, чтобы разработчики могли с ней справиться. Если приложение написано для повторных попыток, тогда они могут включить функциональность с конфигурацией, которая подходит лучше всего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...