Должен ли репозиторий иметь постоянную функциональность?

В книге Фаулера «Шаблоны архитектуры корпоративных приложений» нет упоминания о постоянных функциях шаблона репозитория. Под «постоянными функциями» я подразумеваю такие функции, которые обновляют, сохраняют, добавляют или удаляют объекты. Просто чистый механизм сопоставления по набору объектов домена.

С другой стороны, давайте взглянем на сообщение в блоге Майка Хэдлоу под названием Использование шаблона IRepository с LINQ to SQL. Существуют конкретные постоянные методы, такие как вставка и удаление.

Так как же реализовать шаблон репозитория? Не могли бы вы указать мне на хорошие "настоящие" реализации репозитория. Я испытываю некоторое разочарование по этой теме.

Заранее спасибо! Надеюсь на вашу помощь!


person kseen    schedule 09.12.2011    source источник
comment
Что тебе нужно сделать? Реализуйте это.   -  person John Buchanan    schedule 09.12.2011
comment
Репозиторий - это не что иное, как уровень абстракции между вашим источником данных и вашим приложением. имеет ли он постоянную функциональность или функцию чтения, или и то, и другое, не имеет значения   -  person Polity    schedule 09.12.2011


Ответы (1)


Репозиторий должен действовать как набор данных в памяти. Выбранная вами номенклатура, будь то «Добавить» или «Вставить», «Удалить» или «Удалить», «Выбрать» или «Получить», не имеет значения.

Вы можете разделить свой репозиторий на 2 интерфейса, а затем иметь ReadOnlyRepository для получения / выбора данных и WriteRepository для добавления / обновления / удаления данных. Это не имеет значения. Важно то, что ваше приложение или бизнес-код использует репозиторий для взаимодействия с данными, как если бы они уже были загружены в память, поэтому вам не нужно создавать SQL-запросы, смешанные с бизнес-кодом или кодом приложения.

Обновить

Поскольку мы говорим о шаблоне, не существует единственного «настоящего» интерфейса или реализации репозитория. Может быть множество различных реализаций, которые следуют одному и тому же шаблону.

person danludwig    schedule 09.12.2011