gpt4 book ai didi

entity-framework-core - 在 .NET Core 3.x 中使用 Autofac.AspNetCore.Multitenant 时如何在启动时执行数据库迁移?

转载 作者:行者123 更新时间:2023-12-04 10:42:28 25 4
gpt4 key购买 nike

在单租户 .NET Core 应用程序中,EF Core 数据库迁移(和 DB 种子设定)可以在 IHost 构建完成后立即执行(通常在 Program.cs 中):

await BuildHost(args)
.MigrateDbContext<I.MyDbContext>()
.RunAsync();
}

因为此时,唯一的数据库上下文已经注册。

在 Multi-Tenancy 应用程序中, tenant-specific registrations are performed much later - 在 multitenantContainer.ConfigureTenant(...)回调 - 一旦 HTTPContext 可用。

问题是在执行此回调之后似乎没有位置可以检索租户特定的上下文以调用迁移。

我确定在 multitenantContainer.ConfigureTenant(...)结尾处这样做是错误的回调,因为 this 的功能似乎是纯粹的组件注册。

应该从哪里执行迁移?

最佳答案

您可以注册 IStartable每个租户内部的组件以启动迁移过程。

public class AutomigrateDatabase : IStartable
{
public void AutomigrateDatabase(XContext xContext)
{
this._xContext = xContext;
}

private readonly XContext _xContext;

public void Start()
{
this._xContext.Database.Migrate();
}
}

并像这样注册:
mtc.ConfigureTenant('1', b => {
b.RegisterType<AutomigrateDatabase>().As<IStartable>().SingleInstance();
});

您可以在文档中找到有关可启动代码的更多信息: Running code at startup

关于entity-framework-core - 在 .NET Core 3.x 中使用 Autofac.AspNetCore.Multitenant 时如何在启动时执行数据库迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59865012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com