Этот пост Габриэля Шенкера является хорошим объяснением шаблона хранилища. Он реализует это с помощью NHibernate (вы не говорите, какой ORM вы используете) и предоставляет общий базовый репозиторий. Для меня шаблон репозитория очень связан с тестированием и возможностью подделать его или подделать, и этот пост в блоге также показывает, как сделать свою собственную подделку.
По моему опыту, большинство репозиториев имеют некоторые общие функции, например, GetById, Добавить, Удалить. Поэтому полезно иметь базовый класс, который можно наследовать. Там может быть немного сложнее, когда вы начинаете думать о динамических запросах Linq и о том, как их можно протестировать.
Примеры шаблонов репозитория с Linq можно найти здесь и здесь , но я бы начал с простого, поскольку для некоторых проектов это может быть излишним.