У нас есть заводы для создания сложных объектов. (Для макинтоша)
У нас есть хранилища для их поиска. (Для поиска вещей)
Что у нас есть для их обновления? (Для переодевания)
Похоже на недостающую часть головоломки? Я не думаю, что это относится к репозиториям, поскольку это нарушает единственную ответственность …
Обновление сущности (и, следовательно, базы данных) принадлежит репозиторию. Сам репозиторий является слоем между самой базой данных и программой.
Таким образом, каждая операция с базой данных принадлежит репозиторию. Кроме того, репозиторий не должен взаимодействовать с базой данных, он также может иметь XML, CSV или API в качестве источника данных. Но это не имеет значения, потому что вы общаетесь с хранилищем. Репозиторий имеет дело со всем, что будет потом.
Вы можете просто заменить репозиторий другим, и ваша программа будет работать без проблем, потому что все репозитории реализуют один и тот же интерфейс. Вам больше не нравится база данных MySQL, этот старомодный CSV намного лучше? Просто замените использованный репозиторий, и все готово.
Поиск записи с хранилищем не более SELECT
утверждение, так почему бы вам не UPDATE
или же DELETE
с этим?
Дальнейшее чтение на MSDN
Нашел отличное объяснение и пример на web.archive.org
Я думаю, что это зависит от подхода.
С DDD, например, то, что вы говорите, правда. Репозиторий должен отвечать за добавление, поиск и удаление, поскольку он работает с коллекцией, но возникает вопрос, почему он должен иметь возможность обновлять один объект.
Что можно сделать? Я думаю, что буду копировать только то, что сказал другой человек, поэтому я просто оставлю ссылку, чтобы ответить: подход к удалению сохранения / обновления из хранилища