Inc Wall o 'Text
То, что вы делаете правильно, ваш код будет применяться к каждому хранилищу.
Как вы заявили, цель шаблона Repository состоит в том, чтобы вы могли поменять способ доставки данных в ваше приложение без необходимости рефакторинга кода в вашем приложении (пользовательский интерфейс / уровень доставки).
Взять, к примеру, вы решили переключиться на Linq для Entities или ADO.NET.
Все, что вам нужно, это написать код для ORM, который вы будете использовать (он должен наследовать правильный интерфейс), а затем заставить ваш код использовать этот репозиторий. Конечно, вам нужно будет заменить все ссылки на старый репозиторий или переименовать / заменить ваши старые репозитории ORM, чтобы ваше приложение использовало правильные (если вы не используете какой-либо тип контейнера IoC, в котором вы бы указали, какой репозиторий передать) .
Остальная часть вашего приложения будет продолжать работать должным образом, поскольку все методы, которые вы использовали для получения / редактирования ваших данных, будут возвращать правильные объекты.
С точки зрения непрофессионала, репозитории предоставят вашему приложению необходимые данные таким же образом. Разница лишь в том, как эти данные извлекаются из вашей базы данных (ADO.NET/Linq к чему-либо и т. Д.)
Наличие ваших классов, наследующих интерфейсы репозитория, является жестким ограничением, гарантирующим, что они выводят данные единообразно, что согласуется с тем, как ваше приложение использует его.