【问题标题】:Entity Framework multiple projects with code first migrations具有代码优先迁移的实体框架多个项目
【发布时间】:2014-04-09 09:23:24
【问题描述】:

我有一个名为“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的新上下文:

项目1:

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

项目2:

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

当我在 Project1Context 中更改某些内容时,我会在 Project1 中创建一个新的迁移,这没问题, 但是如果我在核心项目中更改某些内容,比如说将属性 Company 添加到 UserContactInfo 我将不得不去 Project1 和 Project2 并添加新的迁移,我最终会在 Project1 和 Project2 中进行与核心项目相关的迁移.

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

澄清一下,我有 Project1 和 Project2 的单独数据库,最近将 EF 更新到版本 6。

【问题讨论】:

  • 你想用这个实现什么?如果您有两个单独的数据库,则无论如何都需要在 Project1 和 Project2 的迁移中更改基本数据上下文。在我看来,与为这两个项目创建迁移相比,您正在尝试做的事情会引入更多的开销。即使您能做到,您仍然必须将基本更改应用到两个数据库。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 为了使其正常工作,它必须与不建议用于生产的自动迁移相结合。
    猜你喜欢
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多