实体框架具有代码优先迁移的多个项目

Yav*_*rov 7 c# entity-framework ef-migrations entity-framework-6

我有一个名为"Core"的类库项目,它定义了具有公共类属性的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 ...
}
Run Code Online (Sandbox Code Playgroud)

然后我有多个项目引用"核心"项目并定义继承CoreContext的新上下文:

PROJECT1:

public class Project1Context : CoreContext
{
    public DbSet<Foo> Foos { get; set; } //object defined in Project1
}
Run Code Online (Sandbox Code Playgroud)

项目2:

public class Project2Context : CoreContext
{
    public DbSet<Bar> Bars { get; set; } //object defined in Project2
}
Run Code Online (Sandbox Code Playgroud)

当我在Project1Context改变的东西我创建PROJECT1新的迁移是正常的,但如果我的核心项目改变的东西,可以说,添加属性CompanyUserContactInfo我会去到Project和Project2的,并添加新的迁移和我将结束与Project1和Project2中的Core项目相关的迁移.

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

作为澄清,我有Project1和Project2的单独数据库,最近更新了EF到版本6.

小智 0

你所说的是不可能的。想象一下,如果你使用模型创建基本的 CRUD 视图,然后更改模型。你的问题很相似..