首页 > 解决方案 > 如何使用具有多个 dbcontexts 的实体框架迁移,将不同的域类映射到同一个表

问题描述

我想使用 DDD 方法来创建我的域模型。我理解在有界上下文中,只有该上下文所需的数据应该可用,使用该上下文的普遍语言。

假设我在命名空间中有一个Buyer类,在命名空间中有BuyerContext一个SellerSellerContext。最后,两个域类都应该映射到Users数据库的表。为此,我使用 EF Core 2.1。

一个域类可能具有不属于另一个域类的字段/属性,例如Buyer.CreditCardNumberSeller.Rating

为了利用 DDD 方法,我为每个有界上下文创建了两个 dbcontext,例如BuyerDbContextand SellerDbContext,并将 EF 配置为使用同一个Users表,但只映射有界上下文所需的那些字段。我知道该怎么做,我还阅读了有关为每个 dbcontext 创建一个项目的信息。

我不知道的是,我需要做什么,才能在此设置中使用迁移,因此当数据库将被初始化或迁移时,它会创建一个User包含一个字段CreditCardNumber(在 中配置BuyerDbContext)和一个字段Rating(在 中配置SellerDbContext)的表。

我找到的唯一解决方案是创建另一个模型,该模型代表具有自己的 dbcontext 的完整数据库EntitiesDbContext,并使用该上下文进行迁移。所以我最终得到了一个User有两个字段CreditCardNumberRating. 我读到我可能需要在其他 dbcontexts 上禁用某种“初始化”。

这是正确的方法吗?

标签: entity-frameworkdomain-driven-design

解决方案


我找到的唯一解决方案是创建另一个代表完整数据库的模型

这是正确的方法吗?

是的。就是这样,或者根本不使用迁移并使用其他工具管理数据库模式。


推荐阅读