Я пытаюсь поймать исключения, генерируемые, когда таблица не соответствует его «аналоговому сущности», но не может для меня работать, когда мне нужно делать обработку исключений.
Контексты базы данных добавляются в метод 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) { }
}
}
Есть ли у кого-нибудь предложения о том, как я должен стремиться поймать эти исключения?