EF核心迁移-多个数据库

时间:2019-03-12 14:55:10

标签: multi-tenant entity-framework-core-migrations

是否可以在具有相同表集的多个数据库上运行EF Core迁移。这是针对多租户体系结构的,其中有一个主数据库(具有所有租户数据库的元数据,包括租户数据库连接字符串),并且每个租户都有一个数据库,并具有相同的数据库对象集。在SaaS模型中自动创建新的租户数据库时,我们需要能够运行这些迁移,并且在数据库结构发生更改(新列,数据类型更改,新索引等)时也要运行这些迁移。

2 个答案:

答案 0 :(得分:1)

我已经在EF Core's GitHub上发布了相同的问题。

答案是,它不能在设计时完成。基本上,您需要在每个租户的数据库上手动运行迁移脚本。

但是,在运行时执行迁移很容易。您可以在应用启动时为每个连接字符串实例化dbContext(如果是Web应用,则在 WebHost.Run()之前)并执行如下迁移: dbContext.Database.Migrate ();

这当然不是理想的,因为它使您更难使用Visual Studio Package Manager控制台或CLI使用 dotnet ef 命令将迁移回滚到特定点。

答案 1 :(得分:0)

CLI 命令可以提供一个连接字符串。所以你可以为每个数据库运行一次,为每个数据库提供连接字符串。

命令如下所示:
dotnet ef database update --connection "Server=client1.db;Database=client1"