【问题标题】:Auto-migrations to dynamic contexts for multi tenant databases自动迁移到多租户数据库的动态上下文
【发布时间】:2014-04-16 11:17:06
【问题描述】:

到目前为止,我一直在使用自动迁移从我的模型更新我的数据库。我现在更新了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();
}

【问题讨论】:

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


    【解决方案1】:

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

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

    它将在 MyContext 创建时执行所有待处理(或自动)迁移。

    【讨论】:

    • 非常感谢 - 我将此代码添加到 global.asax.cs 中的 Application_Start()
    • 当迁移导致数据丢失时,有没有办法强制迁移运行?就像我在包管理器控制台中使用 update-database -force 一样?
    • AutomaticMigrationDataLossAllowed = true; 行添加到您的配置类构造函数中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2011-12-10
    • 2017-02-26
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    相关资源
    最近更新 更多