DDD и EF, разделяющие сущности между различными ограниченными контекстами - PullRequest
0 голосов
/ 02 октября 2018

Один ограниченный контекст DDD ссылается на один EF DbContext для простоты и чистоты.Как бороться с объектами, которые можно использовать в разных ограниченных контекстах?Например, таблица Person, определенная в HumanResource, DbContext полезна для отчетов и просмотра в другом контексте.Мы попытались использовать справочную модель контекста, чтобы решить эту проблему, но теперь у нас есть класс, представляющий таблицу person во всех наших DDD-контекстах, и мы должны синхронизировать все его свойства.

1 Ответ

0 голосов
/ 02 октября 2018

Вы должны перевести объектную модель из удаленного ограниченного контекста в локальный ограниченный контекст.

Person из контекста HR Bounded не следует использовать, как в локальном контексте Bounded, но converted для (более простого) объекта, названного в соответствии с вездесущим языком из локального контекста Boundedт. е. Employee или Payer или любой другой локальный домен, который у вас есть.

Для этого есть еще техника интеграции .Одним из них является антикоррупционный слой.Например, у вас может быть запланированное задание или задание cron, которое извлекает всех людей и сохраняет их в локальном кэше как локальные объекты;Локальные объекты обычно имеют меньше свойств, чем удаленные объекты, и не имеют логики обновленияКак правило, они реализуются как объекты Value.

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

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

...