Должен ли я реализовать хранилище и службу XML? - PullRequest
2 голосов
/ 02 апреля 2012

У меня есть некоторые сомнения относительно того, как сохранить простой класс, такой как Person, в XML-файле.

Согласно моим знаниям, мне нужно сначала создать службу Xml, которая содержит такие функции, как GetPersons() и SavePersons(IEnumerable<Person> persons).

И мой репозиторий должен содержать что-то вроде возможных запросов, Add и Remove также. Я действительно хочу, чтобы кто-то объяснил, как я могу начать реализовывать эти две вещи? Основная идея заключается в том, чтобы сохранить его в XML-файле и получить несколько запросов из хранилища.

1 Ответ

1 голос
/ 02 апреля 2012

Идея шаблона 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 как:

Поддерживает список объектов, затронутых бизнес-транзакцией, и координирует запись измененийи решение проблем параллелизма.

...