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

6
我在我的解决方案中使用了EF Code-first和有限上下文(BC)来生成数据库。
一些表被部分地定义为不同BC中的类,以添加依赖表的外键,但总有一个BC用单个类定义具有所有字段的表格。
我没有找到基于多个上下文生成单个迁移的方法,因此我不得不添加多个迁移。但在每个迁移中,EF都会添加所有BC中所有类的更改,包括部分定义的表。最大的问题是:
  • 当我添加部分表时,EF希望向DB添加一个新表,但该表已经存在
  • 当我仅需要从映射到表的唯一部分的一个类中删除一个字段时,它会尝试从数据库中删除表中的字段,这会破坏其他类。
我正在开发的项目有十几个开发人员,超过350个表格和20个以上的BC,因此手动更改由EF Migration生成的脚本听起来像疯狂的事情。
似乎唯一解决它的方法是修改迁移管道,以排除具有特定属性标记的类定义的表格的创建或替换。
那么,是否有其他解决办法,或者我应该在EF源代码中进行修改并注入绕过例程?

1
请查看本文末尾,Lerman在其中谈到了用于迁移的所有表的“超级模型”。https://msdn.microsoft.com/en-us/magazine/JJ883952.aspx以及这篇更近期的文章:https://msdn.microsoft.com/en-us/magazine/Dn948104.aspx - Steve Greene
1个回答

0
我会创建一个包含所有表和关系等内容的DbContext。在迁移时使用它,保留你的域模型中已有的绑定上下文。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接