Идея шаблона Repository заключается в том, что вы скрываете детали хранилища данных.Таким образом, пользователь вашего репозитория будет видеть интерфейс только с такими методами, как:
public interface IPersonRepository
{
void Add(Person person);
void Remove(Person person);
void GetById(int personId);
}
Если вы хотите использовать XML в качестве хранилища данных, вы должны создать XmlPersonRepository
, который реализует интерфейс IPersonRepository
.Внутри этих методов вы можете использовать классы .NET для прямого доступа к XML-файлу или загружать свои XML-данные в DataSet
и обращаться к ним более реляционным способом.
Что бы вы сделали, если бы у вас былнесколько репозиториев?Один для людей, один для продуктов и один для заказов.Если вам нужна одна транзакция, которая охватывает эти три репозитория и сохраняет изменения в одном блоке, вам также понадобится другой шаблон.UnitOfWork.
Шаблоны Enterprise Archicture определяет UnitOfWork как:
Поддерживает список объектов, затронутых бизнес-транзакцией, и координирует запись измененийи решение проблем параллелизма.