emz*_*ero 9 c# asp.net migration multiple-databases migratordotnet
简介: 我有这个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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1740 次 |
| 最近记录: |