从不同的 DbContext 继承模式的方法
Way to inherit schema from diffrent DbContext
我正在使用多租户应用程序,了解上下文是必要的。
我有角色数据库模式(让我们称之为 sampleDB),它有自己的 DbContext。我正在这个数据库上使用迁移。这个数据库是每个客户的数据库应该是什么样子的例子。
每个客户都有自己的 sampleDB 版本和对他而言唯一的数据。我已经定义了 ClientDbContext,它是在客户端需要访问他的数据库时基于他的唯一名称创建的。他的数据库的架构更新出现问题。我不想为每个客户手动执行此操作,因为我可以拥有很多客户。
创建 ClientDbContext 后,我想 运行 迁移应用于 SampleDb(ClientDb 和 SampleDb 的架构必须相同)。我无法手动执行此操作(更新数据库),因为客户端数据库的连接字符串在 运行 时已知。
迁移历史记录在 ClientDbContext 中不是必需的,但我无法在 运行 时间更新他的数据库。
我已经定义了方法 wchi 运行s Migrations :
public async Task StartMigrationAsync()
{
await this.Database.MigrateAsync();
}
我无法为该方法定义迁移文件夹。
我不知道如何在不丢失数据的情况下解决这个问题。
动态地运行宁迁移是可能的,但不鼓励。相反,始终创建迁移脚本,检查它(备份目标数据库等),然后应用脚本。
至于多租户场景,您可以保留一份完整的迁移脚本。创建新租户时,只需运行 SQL 命令创建一个新数据库,然后在新数据库context/connection 中应用脚本。
他们解决了一个问题:
迁移系统对于开发时间来说是必需的,所以如果出现问题,不会有任何后果(时间除外:P)
应用程序中使用的每个模型都包含 ClientModel:
public class ClientModel<TModel>{
string dbName
TModel Model
}
然后我只是根据提供的 dbName 创建 db contextext 的实例。
迁移是基于我们的 sampleClientDb 创建的,它包含模式并用作客户端数据库的参考点。
迁移 运行 到达我们 api 中的端点,该端点触发方法 .MigrateAsync()。
我正在使用多租户应用程序,了解上下文是必要的。
我有角色数据库模式(让我们称之为 sampleDB),它有自己的 DbContext。我正在这个数据库上使用迁移。这个数据库是每个客户的数据库应该是什么样子的例子。 每个客户都有自己的 sampleDB 版本和对他而言唯一的数据。我已经定义了 ClientDbContext,它是在客户端需要访问他的数据库时基于他的唯一名称创建的。他的数据库的架构更新出现问题。我不想为每个客户手动执行此操作,因为我可以拥有很多客户。
创建 ClientDbContext 后,我想 运行 迁移应用于 SampleDb(ClientDb 和 SampleDb 的架构必须相同)。我无法手动执行此操作(更新数据库),因为客户端数据库的连接字符串在 运行 时已知。 迁移历史记录在 ClientDbContext 中不是必需的,但我无法在 运行 时间更新他的数据库。 我已经定义了方法 wchi 运行s Migrations :
public async Task StartMigrationAsync()
{
await this.Database.MigrateAsync();
}
我无法为该方法定义迁移文件夹。
我不知道如何在不丢失数据的情况下解决这个问题。
动态地运行宁迁移是可能的,但不鼓励。相反,始终创建迁移脚本,检查它(备份目标数据库等),然后应用脚本。
至于多租户场景,您可以保留一份完整的迁移脚本。创建新租户时,只需运行 SQL 命令创建一个新数据库,然后在新数据库context/connection 中应用脚本。
他们解决了一个问题: 迁移系统对于开发时间来说是必需的,所以如果出现问题,不会有任何后果(时间除外:P)
应用程序中使用的每个模型都包含 ClientModel:
public class ClientModel<TModel>{
string dbName
TModel Model
}
然后我只是根据提供的 dbName 创建 db contextext 的实例。 迁移是基于我们的 sampleClientDb 创建的,它包含模式并用作客户端数据库的参考点。 迁移 运行 到达我们 api 中的端点,该端点触发方法 .MigrateAsync()。