Вопрос

В моих репозиториях я делаю назначения объектам моего домена из запросов сущностей Linq. Затем у меня есть сервисный слой, который будет работать с этими объектами, возвращаемыми из репозиториев.

Должны ли мои объекты Domain находиться в репозитории следующим образом? Или мои репозитории должны быть ограничены объектами и доступом к данным, и вместо этого мой уровень обслуживания назначает объекты домена?

Выполнение всех назначений в репозитории кажется проще, но теперь различие между моей базой данных и объектами домена не очевидно. Что такое правильная практика здесь? TIA

Это было полезно?

Решение

IMO, если приложение относительно простое, и вы не можете себе представить, что вы можете разорвать доступ к данным и выполнить назначения в репозитории. Но если вы думаете, что приложение станет более сложным в будущем или что вы, возможно, захотите изменить доступ к данным, не используйте эту функцию в хранилищах.

Я создал приложения с заданиями в репозиториях, а другой - на сервисном уровне, и еще один, у меня был отдельный уровень преобразования (это не было преобразование один в один, и объекты были сложными).

Одна вещь, которую нужно помнить о лучших практиках, там, чтобы помочь, если это делает вещь более сложной, то не используйте ее.

Другие советы

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

Речь идет о отображении данных. Проверьте эту ссылку: http://www.martinfowler.com/eaaCatalog/repository.html

Также проверьте этот связанный вопрос: Беспорядок IRepository в возвращаемых объектах . Я использовал похожий маппер, но сделал так, чтобы он работал на уровне IQueryable, что позволило делать довольно интересные вещи при работе с объектом домена после сопоставления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top