gpt4 book ai didi

c# - .NET 迁移 : Setup and migrate multiple databases at runtime

转载 作者:太空狗 更新时间:2023-10-29 17:54:17 26 4
gpt4 key购买 nike

简介:我有这个 ASP.NET Webforms 站点,它的特殊性在于它不仅有 1 个数据库,还有很多。为什么?因为您可以即时创建站点的新“实例”。每个“实例”共享相同的代码库,但有自己的数据库。这些所有数据库都具有相同的模式(结构),但当然有不同的数据。不要问“你为什么不把所有东西都放在一个数据库中并使用 InstanceId 来知道哪个是”,因为这是一项业务政策。

应用程序通过 url 知道正在请求哪个实例。有一个额外的数据库来完成这个(我在设计时知道它的连接字符串)。该数据库只有 2 个表并将 url 与“应用程序实例”相关联。然后,当然,每个“应用程序实例”都有其关联的连接字符串。

当前情况:目前没有任何东西可以帮助我们完成同步维护每个实例数据库的工作(将模式更改传播到每个数据库)。所以我们是手工完成的,这当然是一团糟。

问题:我想使用 rails-migration 方式来处理架构更改,最好是 migratordotnet,但如果设置起来更容易,我也可以使用任何其他方式。

问题是 migratordotnet 需要在 proj.build 文件中声明连接字符串,而我直到运行时才知道它们。

真正有用的是在 Application_Start 上运行的某种方法,它将最新的迁移应用到每个数据库。

如何使用 migratordotnet 或任何类似的工具完成此操作?欢迎任何其他建议。

谢谢!

最佳答案

由于这是一个老问题,我假设你已经以某种方式解决了这个问题,但我还是会发布一个解决方案,以帮助其他遇到这个问题的人。可以从代码调用 MigratorDotNet,而不是将其作为 MSBuild 目标:

public static void MigrateToLastVersion(string provider, string connectionString)
{
var silentLogger = new Logger(false, new ILogWriter[0]);
var migrator = new Migrator.Migrator(provider, connectionString,
typeof(YourMigrationAssembly).Assembly, false, silentLogger);
migrator.MigrateToLastVersion();
}

关于c# - .NET 迁移 : Setup and migrate multiple databases at runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3252911/

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