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