6

我有一个名为“核心”一个类库项目,该项目与普通类的属性定义CoreContext:与代码首先迁移实体框架的多个项目

public class CoreContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 
    public DbSet<Role> Roles { get; set; } 
    public DbSet<UserContactInfo> UserContactInfos { get; set; } 
    ... more common properties ... 
} 

然后我有多个项目引用的“核心”项目,并确定新的上下文继承CoreContext:

PROJECT1:

public class Project1Context : CoreContext 
{ 
    public DbSet<Foo> Foos { get; set; } //object defined in Project1 
} 

Project2的:

public class Project2Context : CoreContext 
{ 
    public DbSet<Bar> Bars { get; set; } //object defined in Project2 
} 

当我在Project1Context改变的东西我创建PROJECT1新的迁移是OK, 但如果我在核心项目改变一些东西,让说,添加属性CompanyUserContactInfo我会去到Project和Project2的和添加新的迁移,我将最终完成与Project1和Project2中的Core项目相关的迁移。

我的问题是:有没有一种方法可以在Core项目中保留CoreContext的迁移,并将Project1Context和Project2Context迁移到相应的项目并自动执行与项目相关的所有迁移,因此当我启动Project1时,它将运行它自己的迁移和CoreContext迁移?

正如澄清,我有PROJECT1和Project2的单独的数据库和最近更新EF为版本6

+0

你想用这个做什么?如果您有两个单独的数据库,则无论如何您都需要在Project1和Project2的迁移中对基础数据上下文进行更改。在我看来,你所要做的将会比为这两个项目创建迁移带来更多的开销。即使你可以做到这一点,你仍然必须对两个数据库应用基本更改。 –

回答

0

你所说是不可能的.. 试想一下,如果你正在使用模型来创建基本的CRUD的意见和然后改变模型。你的问题是类似的。

0

也许你可以编写自己的子类继承自MigrateDatabaseToLatestVersion

+0

为了使其正常工作,必须将其与不建议生产的自动迁移结合使用。 – lukew