entity-framework - 如何使用具有多个 dbcontexts 的实体框架迁移,将不同的域类映射到同一个表
问题描述
我想使用 DDD 方法来创建我的域模型。我理解在有界上下文中,只有该上下文所需的数据应该可用,使用该上下文的普遍语言。
假设我在命名空间中有一个Buyer
类,在命名空间中有BuyerContext
一个Seller
类SellerContext
。最后,两个域类都应该映射到Users
数据库的表。为此,我使用 EF Core 2.1。
一个域类可能具有不属于另一个域类的字段/属性,例如Buyer.CreditCardNumber
或Seller.Rating
。
为了利用 DDD 方法,我为每个有界上下文创建了两个 dbcontext,例如BuyerDbContext
and SellerDbContext
,并将 EF 配置为使用同一个Users
表,但只映射有界上下文所需的那些字段。我知道该怎么做,我还阅读了有关为每个 dbcontext 创建一个项目的信息。
我不知道的是,我需要做什么,才能在此设置中使用迁移,因此当数据库将被初始化或迁移时,它会创建一个User
包含一个字段CreditCardNumber
(在 中配置BuyerDbContext
)和一个字段Rating
(在 中配置SellerDbContext
)的表。
我找到的唯一解决方案是创建另一个模型,该模型代表具有自己的 dbcontext 的完整数据库EntitiesDbContext
,并使用该上下文进行迁移。所以我最终得到了一个User
有两个字段CreditCardNumber
和Rating
. 我读到我可能需要在其他 dbcontexts 上禁用某种“初始化”。
这是正确的方法吗?
解决方案
我找到的唯一解决方案是创建另一个代表完整数据库的模型
这是正确的方法吗?
是的。就是这样,或者根本不使用迁移并使用其他工具管理数据库模式。
推荐阅读
- python - 在循环中生成多个 pandas 数据帧,具有变量变量名称
- java - 有谁知道如何将这一行 Java 代码翻译成 Python?
- autodesk-forge - Autodesk Forge API:“此帐户不存在。” 错误
- angular - 如何在新的 Angular GMaps 组件上可视化 GeoJson?
- python - 为什么'无法读取缓存在:.cache-
' 在 Spotipy 中进行身份验证时出现警告并且代码无限期运行? - django - 如果页面加载后数据发生变化,通知用户
- python - 是否有推荐的方法来模拟 AWS Batch 以在 Metaflow 中进行集成测试?
- sharepoint - 在另一个 Sharepoint 文件夹中保持文件更新
- html - 如何使用 Rails 从字符串渲染 HTML 链接?
- wordpress - Wordpress 菜单项显示为 ID 而不是 url slug