使用两个DataContext的Code First迁移

时间:2014-01-26 18:56:29

标签: entity-framework

在我的应用程序中,我有两个DataContexts,默认情况下创建的ApplicationDbContext,它继承自我的模型的IdentityDbContext和DomainContext。现在我在使用迁移更新数据库时遇到一些问题,当我执行时 在创建的迁移文件中向DomainContext添加迁移包含删除与ApplicationDbContext相关的所有表的代码。我google了,我还没有找到任何令人满意的答案,唯一可行的解​​决方案是建议将两个DBContexts混合在一起,但这听起来很奇怪,因为ApplicationDbContext继承自IdentityDbContext。

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base( "DBContextConnString" )
    {
    }
}

    public class DomainContext:DbContext {

    public DomainContext() : base( "DBContextConnString" ) { }

    public DbSet<State> States { get; set; }

    protected override void OnModelCreating( DbModelBuilder modelBuilder ) {
        modelBuilder.HasDefaultSchema( "Workflow" );
        base.OnModelCreating( modelBuilder );
    }
}

EF6公开的一个新的状态“每个数据库的多个上下文消除了使用迁移时或者Code First自动为您创建数据库时每个数据库的一个Code First模型的先前限制。” (Read it here)。但在实践中实现这一点很痛苦,或者我错过了一些非常明显的东西。

我的问题很简单,保持这两个不同的DBContexts生活在和谐中的方法是什么?

1 个答案:

答案 0 :(得分:0)

经过一些实验,我得出结论,更实用的方法是将两个DbContext混合成一个,所以我决定将我的域实体移动到IdentityDbContext。