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

Создание класса, производного от DbContext
Первый шаг в EF Core заключается в создании специального класса, унаследованного от
DbContext
DbContextOptions
namespace AutoLot.Samples
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
}
Именно производный от
DbContext
Конфигурирование экземпляра DbContext
Экземпляр
DbContext
DbContextOptions
DbContextOptions
DbContextOptionsBuilder
DbContextOptions
DbContextOptionsBuilder
DbContext
Options
DbContext
Такая возможность динамического конфигурирования позволяет изменять настройки во время выполнения, просто выбирая разные параметры (скажем, поставщик MySQL вместо SQL Server) и создавая новый экземпляр производного класса
DbContext
Фабрика DbContext этапа проектирования
Фабрика
DbContext
IDesignTimeDbContextFactory<T>
Т
DbContext
IDesignTimeDbContextFactory<T>
CreateDbContext()
DbContext
В показанном ниже классе
ApplicationDbContextFactory
CreateDbContext()
DbContextOptionsBuilder
ApplicationDbContext
ApplicationDbContext
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace AutoLot.Samples
{
public class ApplicationDbContextFactory : IDesignTimeDbContextFactory
<ApplicationDb
Context>
{
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);
}
}
}
Интерфейс командной строки задействует фабрику контекстов, чтобы создать экземпляр производного класса
DbContext
CreateDbContext()
Метод OnModelCreating()
Базовый класс
DbContext
OnModelCreating()
ApplicationDbContext
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Обращения к Fluent API.
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
Сохранение изменений
Чтобы заставить
DbContext
ChangeTracker
SaveChanges()
SaveChangesAsync()
DbContext