Я хочу использовать подход DDD для создания моей доменной модели. Я понял, что в ограниченном контексте должны быть доступны только те данные, которые необходимы для этого контекста, используя вездесущий язык этого контекста.
Допустим, у меня есть класс Buyer
в пространстве имен BuyerContext
и класс Seller
в пространстве имен SellerContext
. В конце оба класса домена должны быть сопоставлены с таблицей Users
базы данных. Для этого я использую EF Core 2.1.
Один класс домена может иметь поля / свойства, которые не являются частью другого класса домена, например Buyer.CreditCardNumber
или Seller.Rating
.
Чтобы использовать подход DDD, я создаю два dbcontexts для каждого ограниченного контекста, например BuyerDbContext
и SellerDbContext
, и настраиваю EF для использования одной и той же таблицы Users
, но отображая только эти поля, необходимые для ограниченного контекста. Я знаю, как это сделать, я также читал о создании проекта для каждого dbcontext.
Что я не знаю, так это , что мне нужно сделать, чтобы использовать миграции с этой настройкой, поэтому, когда база данных будет инициализирована или перенесена, она создаст таблицу User
с полем CreditCardNumber
(настроено в BuyerDbContext
) и поле Rating
(настроено в SellerDbContext
).
Единственное решение, которое я нашел , - это создать еще одну модель, которая представляет собой полную базу данных со своим собственным dbcontext, например EntitiesDbContext
, и использовать этот контекст для миграций. В итоге я получаю класс User
с двумя полями CreditCardNumber
и Rating
. Я прочитал, что мне может потребоваться отключить какую-либо «инициализацию» для других dbcontexts.
Это правильный подход?