Шаблон репозитория Пошаговое объяснение

204

Может кто-нибудь объяснить мне шаблон репозитория в .NET, шаг за шагом, давая очень простой пример или демонстрацию.

Я знаю, что это очень распространенный вопрос, но до сих пор я не нашел удовлетворительного ответа.

Теги:
design-patterns
repository

2 ответа

132

В качестве резюме я бы описал более широкое влияние шаблона репозитория. Он позволяет использовать весь ваш код для использования объектов без необходимости знать, как объекты сохраняются. Все знания о сохранении, включая сопоставление таблиц с объектами, содержатся в репозитории.

Очень часто вы обнаружите SQL-запросы, разбросанные в кодовой базе, и когда вы приходите, чтобы добавить столбец в таблицу, вам нужно искать файлы кода, чтобы попытаться найти таблицы использования. Влияние изменения далеко идущее.

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

Возможно, это поможет подумать о том, почему вы используете шаблон репозитория. Вот несколько причин:

  • У вас есть одно место для внесения изменений в доступ к данным.

  • У вас есть одно место, отвечающее за набор таблиц (обычно)

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

Существуют и другие преимущества, например, если вы использовали MySQL и хотели переключиться на SQL Server, но я никогда на практике этого не видел!

  • 24
    RE переключаясь с dbms a на b, я пойду на запись, что я не только видел это, я делал это в рабочем коде. Ранее мы использовали Oracle, нам пришлось сменить хостинг-провайдера, остановившись на Azure (до того, как они поддержали Oracle), поэтому нам пришлось перейти на SQL Azure. К сожалению, мы не разделили всю логику доступа к данным на этом этапе, но мы, безусловно, сделали это так же, как и эту миграцию (и я могу добавить, что в будущем).
  • 4
    Я знаю, что этот комментарий старый и закрыт как не по теме, но я видел, что это было сделано в нескольких компаниях. Как правило, это часть процесса перехода к ORM или от него. Хранилище облегчает его переключение, особенно если вы загружаете их из абстрактного фабричного шаблона или используете контейнер IoC.
116

Это хороший пример: Пример шаблона репозитория в С#

В основном, репозиторий скрывает детали того, как именно данные извлекаются/сохраняются из/в базу данных. Под обложками:

  • для чтения, он создает запрос, удовлетворяющий заданным критериям, и возвращает набор результатов
  • для записи он выдает команды, необходимые для создания базового механизма сохранения (например, базы данных SQL) для сохранения данных
  • 12
    Этот пример является лучшим объяснением, просто лучше, чем документация MSDN.
  • 2
    Я нашел это очень хорошо. Он также предоставляет достойное объяснение единицы работы, которая представляется более общей формой шаблона данных по сравнению с шаблоном репозитория.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню