Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.

Создание класса, производного от DbContext
Первый шаг в EF Core заключается в создании специального класса, унаследованного от
DbContextDbContextOptionsnamespace AutoLot.Samples{ public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } }}Именно производный от
DbContextКонфигурирование экземпляра DbContext
Экземпляр
DbContextDbContextOptionsDbContextOptionsDbContextOptionsBuilderDbContextOptionsDbContextOptionsBuilderDbContextOptionsDbContextТакая возможность динамического конфигурирования позволяет изменять настройки во время выполнения, просто выбирая разные параметры (скажем, поставщик MySQL вместо SQL Server) и создавая новый экземпляр производного класса
DbContextФабрика DbContext этапа проектирования
Фабрика
DbContextIDesignTimeDbContextFactory<T>ТDbContextIDesignTimeDbContextFactory<T>CreateDbContext()DbContextВ показанном ниже классе
ApplicationDbContextFactoryCreateDbContext()DbContextOptionsBuilderApplicationDbContextApplicationDbContextusing System;using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Design;namespace AutoLot.Samples{ public class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext> { public ApplicationDbContext CreateDbContext(string[] args) { var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>(); var connectionString = @"server=.,5433;Database=AutoLotSamples; User Id=sa;Password=P@ssw0rd;"; optionsBuilder.UseSqlServer(connectionString); Console.WriteLine(connectionString); return new ApplicationDbContext(optionsBuilder.Options); } }}Интерфейс командной строки задействует фабрику контекстов, чтобы создать экземпляр производного класса
DbContextCreateDbContext()Метод OnModelCreating()
Базовый класс
DbContextOnModelCreating()ApplicationDbContextprotected override void OnModelCreating(ModelBuilder modelBuilder){ // Обращения к Fluent API. OnModelCreatingPartial(modelBuilder);}partial void OnModelCreatingPartial(ModelBuilder modelBuilder);Сохранение изменений
Чтобы заставить
DbContextChangeTrackerSaveChanges()SaveChangesAsync()DbContext