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

时间:2015-08-28 08:33:11

标签: entity-framework ef-migrations

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

某些表部分(不是所有字段)被定义为不同BC中的类,用于为依赖表添加外键,但总有一个BC具有一个类,该类定义了包含单个类的所有字段的表。

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

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

我正在工作的项目有开发人员,超过350个表,以及超过20个BC,所以由EF Migration手工生成的更改脚本听起来像是疯狂。

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

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

1 个答案:

答案 0 :(得分:0)

我将创建一个DbContext,其中包含所有表以及所有关系等。将其用于迁移,并保留域模型所拥有的绑定上下文。