自动迁移到多租户数据库的动态上下文

时间:2014-04-15 03:04:27

标签: c# entity-framework multi-tenant ef-migrations

到目前为止,我一直在使用自动迁移来从我的模型更新我的数据库。我现在已经使用dbContext()数据库连接字符串更新了web.config构造函数,以根据用户/公司动态设置连接字符串上下文。这是通过从另一个数据库查找详细信息来构建的。

这一切都很有效,直到我对模型进行更改。我无法再从程序包管理器控制台运行update-database来更新我的数据库,因为代码中没有对数据库实例的引用。

我现在如何对数据库进行更改?

public MyContext() : base(ConnectionString())
{
}

private static string ConnectionString()
{
    SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
    sqlBuilder.DataSource = CurrentCompany.DataSource;
    sqlBuilder.InitialCatalog = CurrentCompany.InitialCatalog; 
    sqlBuilder.PersistSecurityInfo = true;
    sqlBuilder.IntegratedSecurity = true;
    sqlBuilder.MultipleActiveResultSets = true;
    return sqlBuilder.ToString();
}

1 个答案:

答案 0 :(得分:2)

您可以在第一次数据库调用之前添加以下行:

Database.SetInitializer<MyContext>(new MigrateDatabaseToLatestVersion<MyContext, MyContextConfiguration>());

它将在MyContext创建时执行所有挂起(或自动)迁移。