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

时间:2016-04-23 09:53:52

标签: entity-framework entity-framework-6

我有以下类的结构:

  1. SecurityLayer.Domain dll

    • 用户类和其他一些类
    • 有这个
    • 的nuget包
  2. SecurityLayer.Data dll

    • SecurityDbContext类(继承自DbContext并管理用户相关实体
    • 有这个
    • 的nuget包
  3. 现在我构建了另一个使用上面两个包的产品。我有以下结构

    1. MyProduct.Data dll有一个 ProductDbContext 来管理 MyProduct.Domain dll
    2. 中的实体

      问题是当我在MyProduct.Data项目上使用添加迁移时,EF生成迁移以从MyProduct.Domain和SecurityLayer.Domain <创建所有实体/ p>

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

1 个答案:

答案 0 :(得分:1)

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

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