В приложениях, отличных от Orchard, шаблон состоит в том, чтобы изолировать модели данных (и код доступа к данным) в проекте, на который ссылаются такие вещи, как библиотеки домена/бизнес-логики, проекты веб-приложений, проекты веб-сервисов и т. д.
Идея Orchard кажется в ограничении модели данных только одним модулем без намерения иметь какое-либо отношение к модели данных других модулей.
Слово «ограничить», возможно, несколько резкое или неточное — возможно, «ограничить» здесь будет лучшим выбором формулировки. Имея два модуля, A и B, и работая над модулем A, мы можем добавить ссылку на модуль B и использовать репозитории для сущностей из него. Но при работе над модулем B и необходимости доступа к данным из модуля A мы не можем — по крайней мере, не изящно в рамках фреймворка. Здесь существует проблема круговой ссылки.
В этом случае я склоняюсь к нескольким подходам:
- объединить два модуля в один (и иметь дело с потенциально обременительной и рискованной миграцией данных)
- прибегать к доступу к данным напрямую, без использования фреймворка или репозитория
- поместите все модели данных в один модуль, на который ссылаются все другие пользовательские модули (опять же, больше риска переноса данных)
- поднимите руку сюда...
Является ли что-то из этого правильной интерпретацией намерений разработчиков программного обеспечения Orchard в отношении модулей и отношений данных?