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

时间:2014-03-06 16:00:05

标签: c# entity-framework entity-framework-6 ef-migrations

我有一个名为“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 ...
}

然后我有多个项目引用“Core”项目并定义继承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中创建了一个新的迁移,这是好的, 但是,如果我在Core项目中更改某些内容,我们可以说将属性Company添加到UserContactInfo我将不得不转到Project1和Project2并添加新的迁移,我将最终完成与Core项目相关的迁移在Project1和Project2中。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

也许您可以编写自己继承自MigrateDatabaseToLatestVersion

的子类