实体框架,代码优先。如何覆盖生成向上/向下脚本

err*_*ror 6 entity-framework entity-framework-migrations

我在我的解决方案中使用有界上下文 (BC) 和 EF Code-first 来生成数据库。

有些表被部分地(不是所有字段)定义为不同 BC 中的类,以便为相关表添加外键,但总是有一个 BC 具有一个类,该类通过单个类定义具有所有字段的表。

我没有找到基于多个上下文生成单个迁移的方法,因此我不得不添加多个迁移。但是在每次迁移中,EF 都会添加 BC 中所有类的所有更改,包括部分定义的表。最大的问题是:

  • 当我添加部分表时,EF 想向数据库添加一个新表,该表已存在
  • 当我只需要删除表仅部分映射到的一个类中的字段时,它想从数据库中的表中删除一个字段,这会破坏其他类。

我正在工作的项目有十几个奇怪的开发人员、350 多个表和 20 多个 BC,因此手动更改 EF Migration 生成的脚本听起来很疯狂。

似乎解决它的唯一方法是更改​​迁移管道以排除由标记有特定属性的类定义的表的创建或更改。

那么,有没有其他方法可以解决我的问题,或者我应该破解 EF 源代码并在那里注入旁路例程?

Zdr*_*nev 0

我将创建一个 DbContext,其中包含所有表和所有关系等。使用它进行迁移,保留域模型的绑定上下文。