Как использовать миграцию структуры сущностей с несколькими dbcontexts, отображающими разные классы домена в одну таблицу - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу использовать подход 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.

Это правильный подход?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Лично я не фанат миграций, так как не думаю, что ответственность за обслуживание базы данных лежит на приложениях. Если возможно, я использую SSDT в основном для решений баз данных, но, конечно, от вашего проекта зависит, возможно ли развертывание SSDT-пакетов или нет, но обычно это так.

https://visualstudio.microsoft.com/vs/features/ssdt/

0 голосов
/ 08 ноября 2018

Единственное решение, которое я нашел, - это создать другую модель, которая будет представлять собой полную базу данных

Это правильный подход?

Да. Дело в том, что вы просто не используете миграцию и управляете схемой базы данных с помощью какого-либо другого инструмента.

...