EF CORE:是否可以在一个数据库中支持两种模型?

EF CORE: is it possible to support two models in one database?

是否可以在一个数据库中支持所有 "migrations functionality" 的两种不同的 EF Core 模型?

我想我应该以某种方式分开 dbo._EFMigrationsHistory ? 在文档中找不到这样的选项。

是的,您可以在同一数据库中拥有多个上下文。 I've put together a sample showing three contexts in the same database。您像往常一样声明三个上下文,并且在您设置迁移时差异会显现出来;你只需要在这里更明确一点,命名你正在迁移或更新的上下文,并且明确说明迁移的去向是个好主意。

这是上面链接的示例项目的 Program.Main,显示了三个依赖注入上下文的基本添加,然后对每个执行 "stuff"。有关其余文件,请参阅 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 commands/flags 略有不同):

迁移:

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

数据库更新:

dotnet ef database update --context AnimalContext