>我有以下类结构:
-
SecurityLayer.Domain dll
- 用户类和其他一些类
- 为此有一个 nuget 包
-
SecurityLayer.Data dll
- SecurityDbContext 类(继承自 DbContext 并管理与用户相关的实体)
- 为此有一个 nuget 包
现在我构建了另一个使用上述两个包的产品。我有以下结构
- MyProduct.Data dll 有一个 ProductDbContext 来管理来自 MyProduct.Domain dll 的实体
问题是,当我在 MyProduct.Data 项目上使用 Add-Migration 时,EF 会生成一个迁移,以从 MyProduct.Domain 和 SecurityLayer.Domain 创建所有实体
我知道 EF6 在单个数据库中支持多个 DbContext,但它对我不起作用。我们是否可以做一些事情来让 EF 避开 SecurityLayer.Domain 中的实体?任何建议都非常感谢。啧!
最简单的方法是创建初始迁移并从中删除不相关的位。由于 EF 的工作方式,后续迁移将不会选取现有表。
迁移实际上将数据库的状态存储在名为 __MigrationHistory
的表中。其中一列包含压缩的 EDMX 文件。可以将内容提取为 blob,将其另存为.zip
文件,然后亲自查看。每次迁移都使用它来确定自上次迁移以来发生了哪些更改。