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

Entity framework EF6如何避免为另一个DbContext管理的实体创建表?,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我的课程结构如下: 域dll 用户类和其他一些类 有一个nuget包 SecurityLayer.datadll SecurityDbContext类(从DbContext继承并管理与用户相关的实体 有一个nuget包 现在我构建了另一个产品,它使用上面的两个包 MyProduct.Data dll有一个ProductDbContext来管理来自MyProduct.Domain dll的实体 问题是,当我在MyProduct.Data项目上使用添加迁移时,EF生成一个迁移,从MyProd

我的课程结构如下:

  • 域dll

    • 用户类和其他一些类
    • 有一个nuget包
  • SecurityLayer.datadll

    • SecurityDbContext类(从DbContext继承并管理与用户相关的实体
    • 有一个nuget包
  • 现在我构建了另一个产品,它使用上面的两个包

  • MyProduct.Data dll有一个ProductDbContext来管理来自MyProduct.Domain dll的实体
  • 问题是,当我在MyProduct.Data项目上使用添加迁移时,EF生成一个迁移,从MyProduct.Domain和SecurityLayer.Domain创建所有实体


    我知道EF6在一个数据库中支持多个DbContext,但它对我不起作用。我们能做些什么让EF避免SecurityLayer.Domain中的实体吗?任何建议都非常感谢。Tks非常感谢!

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


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

    为什么不要在创建迁移代码后编辑迁移代码以删除需要的位?谢谢@DavidG,但可能会在以后的迁移中重新创建,你这样认为吗?不会。迁移将数据库的状态存储在名为
    \u MigrationHistory
    的表中。其中一列实际上是一个压缩的EDMX文件。每次迁移ion使用它来确定自上次迁移以来发生了什么变化。我同意DavidG的观点;我们还为每个上下文生成迁移,然后手动编辑它们,以删除涉及不同上下文的语句。@DavidG感谢您的回答,它也适用于我。