Конфигурация и создание контекста
Редактировал(а) Alexandr Fokin 2023/08/12 10:40
Реализацию общего контекста в возможностью внедрения различных конфигураторов. В том числе при необходимости можно реализовать конфигуратор под разные БД (Учитывая, что обе БД поддерживаются заложенный в контекст функционал, а сырые (Raw) запросы (и хранимые функции) написаны под обе версии СУБД и также внедряются в зависимости от типа) | |
Встроенные механизмы | Интерфейс IEntityTypeConfiguration и IDesignTimeServices для конфигурации контекста (в частности для манипуляции миграциями). Design-time DbContext Creation |
Кастомный инициализатор | public class AppDbContext : DbContext { private readonly IContextConfigurator Configurator; public AppDbContext( IContextConfigurator configurator ) { Configurator = configurator; } protected override void OnModelCreating( ModelBuilder builder ) { //Конфигурация модели, маппинга классов на таблицы. base.OnModelCreating(builder); Configurator.OnModelCreating(builder); } protected override void OnConfiguring( DbContextOptionsBuilder optionsBuilder ) { // Подключение к БД base.OnConfiguring(optionsBuilder); Configurator.OnConfiguring(optionsBuilder); } } |
Инициализация данных | Инициализация с использованием встроенного механизма (на основе Миграции): EntityTypeBuilder.HasData |
Самодельный модуль, вызываемый при старте приложения (не используя Миграции, что может быть как плюсом, так и минусом). Требуется явный вызов метода. Логики: 1) создать если не существует 2) обновить если существует, но не соответствует нужному значению | |
Самодельные решение на основе Миграции, на основе сценария Собственная кастомная логика создания миграций, используя расширенную самодельную конфигурацию данных. |