EF CORE: возможно ли поддерживать две модели в одной базе данных? - PullRequest
0 голосов
/ 29 июня 2018

Можно ли поддерживать две разные модели EF Core со всеми «функциями миграции» в одной базе данных?

Полагаю, мне следует как-то отделить dbo. _EFMigrationsHistory? Не могу найти такую ​​опцию в документации.

1 Ответ

0 голосов
/ 30 июня 2018

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

Вот Program.Main примера проекта, на который ссылаются выше, демонстрируя базовое добавление трех контекстов для внедрения зависимостей, а затем выполнение «вещи» с каждым. См. Репозиторий на Github для остальных файлов.

    class Program
{
    static async Task Main(string[] args)
    {
        var providers = new ServiceCollection()
            .AddDbContext<AnimalContext>(options => options.UseSqlServer(Globals.CONNECTIONSTRING))
            .AddDbContext<DoctorContext>(options => options.UseSqlServer(Globals.CONNECTIONSTRING))
            .AddDbContext<CarContext>(options => options.UseSqlServer(Globals.CONNECTIONSTRING))
            .BuildServiceProvider();

        var animalContext = providers.GetService<AnimalContext>();
        await AnimalHelpers.Seed(animalContext);
        await AnimalHelpers.Read(animalContext);

        var carContext = providers.GetService<CarContext>();
        await CarHelpers.Seed(carContext);
        await CarHelpers.Read(carContext);

        var doctorContext = providers.GetService<DoctorContext>();
        await DoctorHelpers.Seed(doctorContext);
        await DoctorHelpers.Read(doctorContext);

        Console.ReadKey();

    }
}

Чтобы инициализировать базу данных, я запустил миграцию для каждого контекста, затем запустил обновление базы данных для каждого следующим образом (в powershell; команды / флаги PMC немного отличаются):

Миграция:

dotnet ef migrations add CreateAnimalsSchema --context AnimalContext -o Data/Migrations/Animals

Обновление базы данных:

dotnet ef database update --context AnimalContext

...