EF6如何避免为由另一个DbContext管理的实体创建表?

问题描述:

我有下面的类结构:EF6如何避免为由另一个DbContext管理的实体创建表?

  1. SecurityLayer.Domain DLL

    • 用户类和其它一些类
    • 拥有NuGet包这个
  2. SecurityLayer。数据dll

    • SecurityDbContext类(从继承的DbContext和管理用户相关实体
    • 拥有NuGet包这个

现在我建立它使用上述两种封装其他产品。我有下面结构

  1. MyProduct.Data DLL具有ProductDbContext管理从MyProduct.Domain DLL实体
  2. 的问题是,当我使用在MyProduct.Data项目添加迁移,EF产生迁移到来自MyProduct.Domain和SecurityLayer.Domain

    创建 ALL实体

    我知道, EF6在单个数据库中支持多个DbContext,但它不适用于我。我们可以做些什么让EF避免SecurityLayer.Domain中的实体?任何建议是非常感谢。需要很多!

开始=>
+0

为什么不在创建后编辑迁移代码以删除需要注释的位? – DavidG

+0

谢谢@DavidG,但也许它会在以后的迁移中重新创建,你是这么认为的吗? – hazjack

+0

不,它不会。迁移将数据库的状态存储在名为'__MigrationHistory'的表中。其中一列实际上是一个压缩的EDMX文件。每次迁移都使用它来确定自上次迁移后发生了哪些变化。 – DavidG

最简单的方法是创建初始迁移并从中删除不相关的位。由于EF的工作方式,后续的迁移不会选取现有的表。

迁移实际上将数据库的状态存储在名为__MigrationHistory的表中。其中一列包含一个压缩的EDMX文件。您可以将内容提取为blob,将其保存为.zip文件并亲自查看。每次迁移都使用它来确定自上次迁移后发生了哪些变化。