Репозиторий, объекты Entity и объекты Domain
-
03-07-2019 - |
Вопрос
В моих репозиториях я делаю назначения объектам моего домена из запросов сущностей Linq. Затем у меня есть сервисный слой, который будет работать с этими объектами, возвращаемыми из репозиториев.
Должны ли мои объекты Domain находиться в репозитории следующим образом? Или мои репозитории должны быть ограничены объектами и доступом к данным, и вместо этого мой уровень обслуживания назначает объекты домена? Р>
Выполнение всех назначений в репозитории кажется проще, но теперь различие между моей базой данных и объектами домена не очевидно. Что такое правильная практика здесь? TIA р>
Решение
IMO, если приложение относительно простое, и вы не можете себе представить, что вы можете разорвать доступ к данным и выполнить назначения в репозитории. Но если вы думаете, что приложение станет более сложным в будущем или что вы, возможно, захотите изменить доступ к данным, не используйте эту функцию в хранилищах.
Я создал приложения с заданиями в репозиториях, а другой - на сервисном уровне, и еще один, у меня был отдельный уровень преобразования (это не было преобразование один в один, и объекты были сложными).
Одна вещь, которую нужно помнить о лучших практиках, там, чтобы помочь, если это делает вещь более сложной, то не используйте ее.
Другие советы
Раньше мне это не нравилось. Но сейчас обычно никогда не оглядываюсь назад. В основном дело в том, что если вам нужно перейти на внешний источник данных, который структурирован по-другому, вы можете настроить новое отображение вместе с реализацией кода репозитория и покончить с этим.
Речь идет о отображении данных. Проверьте эту ссылку: http://www.martinfowler.com/eaaCatalog/repository.html р>
Также проверьте этот связанный вопрос: Беспорядок IRepository в возвращаемых объектах . Я использовал похожий маппер, но сделал так, чтобы он работал на уровне IQueryable, что позволило делать довольно интересные вещи при работе с объектом домена после сопоставления.