Шаблон репозитория основан на IoC и шаблонах внедрения зависимостей, а модульному тестированию просто необходим IoC и внедрение зависимостей для упрощения тестирования. Первоначально он не был предназначен для того, чтобы написать еще один способ написания слоя доступа к данным, хотя многие публикуют и реализуют его как таковой. Для небольших приложений это зависит от того, сколько усилий вы хотите приложить.
Обычно реализация SchoolclassRepository находится в отдельном пространстве имен от интерфейсов IRepository, поэтому вы можете поддерживать несколько реализаций. (Не правило)
Вы можете установить конструктор ViewModel s constructor (mvvm pattern) to take a parameter for the repository interface IRepository<Schoolclass>. Now your ViewModel
на основе интерфейса, а не реализации.
private IRepository<Schoolclass> _repository
public ViewModel(IRepository<Schoolclass> Repository)
{ this._repository = Repository; }
Почему вышеперечисленное ....
Шаблон также облегчает внесение будущих изменений.
Если ваша реализация SchoolclassRepository () использовала ADO.NET (sqlconnections, sqlcommands ...) для доступа к данным, вы можете позже создать другой SchoolclassRepository (), который использует NHibernate, Entity Framework или какой-либо другой метод доступа к данным. Теперь все, что вам нужно сделать, это изменить ваших потребителей на использование целевой реализации и внедрить их в ViewModel.
Repository repository = new ADONET.SchoolclassRepository();
or
Repository repository = new EntityFramework.SchoolclassRepository();
ViewModel viewmodel = new ViewModel(repository);
Это просто быстрый обзор использования, я бы порекомендовал продолжить изучение шаблона хранилища и того, как заставить его работать на вас. Вы, очевидно, заинтересованы в том, что это хорошо.