C# EF6多租户(多数据库)Web应用程序-代码优先迁移

C# EF6多租户(多数据库)Web应用程序-代码优先迁移,c#,asp.net-mvc,entity-framework-6,entity-framework-migrations,multi-tenant,C#,Asp.net Mvc,Entity Framework 6,Entity Framework Migrations,Multi Tenant,令人惊讶的是,我找不到有这种特殊情况的人。我正在开发一个SAAS风格的MVC/EF web应用程序。我想为每个客户提供他们自己的子域名和独立数据库,域名将决定应用程序单个EF上下文的名称/连接字符串。因此,当每个客户注册时,我将启动一个新的数据库,并将他们重定向到他们的子域进行登录 但是,当我在运行时切换连接名称时,代码优先迁移不会启动并将新数据库配置为最新版本。我猜这是因为在应用程序的生命周期内,EF只会对每个上下文类型触发一次迁移。有什么建议吗?我是否可以在应用程序启动时手动启动所有已注册子

令人惊讶的是,我找不到有这种特殊情况的人。我正在开发一个SAAS风格的MVC/EF web应用程序。我想为每个客户提供他们自己的子域名和独立数据库,域名将决定应用程序单个EF上下文的名称/连接字符串。因此,当每个客户注册时,我将启动一个新的数据库,并将他们重定向到他们的子域进行登录


但是,当我在运行时切换连接名称时,代码优先迁移不会启动并将新数据库配置为最新版本。我猜这是因为在应用程序的生命周期内,EF只会对每个上下文类型触发一次迁移。有什么建议吗?我是否可以在应用程序启动时手动启动所有已注册子域/数据库的迁移?

您基本上需要以编程方式应用迁移。见[本][1]和[本][2]。[1] :[2]:就这样!我已经关闭了global.asax中的默认setInitializer()调用,并在我的数据库上迭代以手动初始化它们。。。foreach(connectionString设置ConfigurationManager.connectionString中的connectionString){var配置=新的排行榜配置{TargetDatabase=新的DbConnectionInfo(connectionString.Name)};var migrator=新的DbMigrator(配置);migrator.Update();}谢谢你的指点。