[英]EF-Core Single Deployment; Multiple Databases; Migrations
我目前有一個 .net core web api,每個客戶端都有一個 SQL Server 數據庫。 每次調用都需要傳入一個 api 密鑰,然后在主租戶數據庫中查找以獲取正確的連接字符串。 然后 api 將在啟動文件中設置連接字符串並運行調用。
在 api 中,我有一個端點,允許我將所有租戶更新到最新的遷移,我還有一個控制台應用程序可以執行相同的操作。 像這樣的東西:
public async Task UpdateAllDatabases()
{
var qry = await GetAll(null, true);
foreach (var i in qry)
{
var optionsBuilder = new DbContextOptionsBuilder<MigrationContext>().UseSqlServer(i.DatabaseConnectionString);
using (var tenantContext = new MigrationContext(optionsBuilder.Options, _appSettings))
{
tenantContext.Database.Migrate();
}
}
}
我遇到的問題是何時需要remove-migration
。 如何從所有租戶數據庫中刪除遷移?
您可以使用相同的Migrate方法,但參數為'targetMigration'。
這會將所有數據庫升級或回滾到指定的目標遷移。
public void Migrate (string targetMigration = null);
更新:添加了示例
MigrationContext.cs
public class MigrationContext : DbContext
{
}
執行遷移
using (var tenantContext = new MigrationContext())
{
tenantContext.Database.GetService<IMigrator>().Migrate("targetMigration");
}
.csproj文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.4" />
</ItemGroup>
</Project>
我很喜歡EFCoreMigrateMultiDatabase這是我的演示,需要更換服務IMigrationsScaffolder
和IMigrationsAssembly
支持具有單個 dbcontext 的不同數據庫進行遷移
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.