在我的应用程序中,我有两个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生活在和谐中的方法是什么?
答案 0 :(得分:0)
经过一些实验,我得出结论,更实用的方法是将两个DbContext混合成一个,所以我决定将我的域实体移动到IdentityDbContext。