Мне нравится думать о хранилище как о другом слое абстракции.Вы должны добавлять уровни абстракции только тогда, когда стоимость их реализации меньше, чем стоимость НЕ выполнения (сопровождение кода, поддержка, улучшения и т. Д.).
Помните, что цель шаблона репозитория состоит в том, чтобы отделить логику, которая извлекает данные (CRUD) и сопоставляет их с моделью сущностей от бизнес-логики, действующей на модели.То, что это часто в конечном итоге делает / выглядит в реальном мире, - это некая форма бизнес-сущностей, которая абстрагирует базовую физическую модель данных.
Что касается вашего вопроса о транзакции, то да, это больше относится к шаблону Единица работы .Поскольку вы упомянули службы, я бы посоветовал вам НЕ передавать ваше соединение вашим различным классам / методам доступа к данным, а вместо этого позволить WCF управлять транзакцией для вас, используя автоматическую регистрацию. Вот выдержка из Книги WCF Ювала Лоуи (настоятельно рекомендуется), которая объясняет, как и почему этот метод управления транзакциями.
Итак, чтобы ответить на ваш вопрос,шаблон репозитория подходит как способ абстрагировать физическую модель данных и отделить CRUD / отображение от бизнес-логики.