我已经构建了一个多租户 MVC4 应用程序,该应用程序根据主机名使用特定数据库。
该网站绑定到我们所有客户的主机名:
- 如果访问者浏览“domain1.com”,则使用“domain1.com”数据库。
- 如果访问者浏览“domain2.com”,则使用“domain2.com”数据库。
自动迁移通常放在 Application_Start() 中:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyProject.Models.MyProjectContext, MyProject.Migrations.Configuration>());
这将在应用程序启动时运行迁移。但是,由于我的应用程序响应多个主机名,因此只会迁移一个数据库。当我切换到另一个主机名时,该数据库不会迁移,因为应用程序已经加载到服务器上的内存中。
我通过将上面的代码行移动到 Session_Start() 解决了这个问题。
这是好习惯吗?有更好的解决方案吗?
提前致谢,
安德烈亚斯