Исправление исключений при инициализации DbContext

Я пытаюсь поймать исключения, генерируемые, когда таблица не соответствует его «аналоговому сущности», но не может для меня работать, когда мне нужно делать обработку исключений.

Контексты базы данных добавляются в метод ConfigureServices при запуске (обрезается для удобства чтения)

public void ConfigureServices(IServiceCollection Services)
{
    ...

    Services.AddDbContext<AccountsContext>(Options =>
        Options.UseSqlServer(
            ApplicationConfig.GetConnectionString("Accounts")
        )
    );
    Services.AddDbContext<SupportContext>(Options =>
        Options.UseSqlServer(
            ApplicationConfig.GetConnectionString("Support")
        )
    );

    ...

    Services.AddMvc(Options =>
    {
        Options.Filters.Add(new AllowAnonymousFilter());
    });
}

Эти контексты генерируются с помощью команды Scaffold-DbContext, упакованной в «Ядро Entity Framework Core». NET Command Line Tools "NuGet.

Прослеживая поток выполнения, я вижу, что вряд ли я смогу (или захочу) обработать захват исключений в методе ConfigureServices, как если бы они определены там, они фактически не инициализируются до тех пор, пока не будет вызвана зависимость. Я также искал объекты DbContext и ModelBuilder, которые искали способ подключить исключение, но не имели никакой удачи в этом отношении.

В настоящее время я рассматриваю возможность создания пользовательский класс DbContext, который наследует оригинал, исключительно для добавления обработки исключений на этом уровне; это будет жизнеспособным курсом?

Я не могу обернуть переопределенный метод DbContext.OnModelCreating в try-catch, так как этот код в основном является текучим, и любые изменения будут уничтожены следующим прогоном, который произойдет .

В стороне; и я не знаю, будет ли это полезно, но я выделил конструкторы в отдельную частицу, так как они не сгенерированы с остальной частью кода, который им нужно сохранить от перезаписывания, например, один из них ниже.

using Microsoft.EntityFrameworkCore;

namespace InterfaceLayer.Entities
{
    public partial class AccountsContext
    {
        public AccountsContext(
            DbContextOptions<AccountsContext> ContextOptions
        ) : base(ContextOptions) { }
    }
}

Есть ли у кого-нибудь предложения о том, как я должен стремиться поймать эти исключения?

1
задан 13 August 2018 в 15:52

0 ответов

Другие вопросы по тегам:

Похожие вопросы: