Репозитории и Единицы работы - который ответственен за какой?

За прошлую неделю или таким образом, я читал много статей и учебных руководств относительно шаблона репозитория. Много статей тесно связывает шаблон репозитория с шаблоном единицы работы. В этих статьях я обычно нахожу код подобным этому:

interface IUnitOfWork<TEntity>
{
    void RegisterNew(TEntity entity);
    void RegisterDirty(TEntity entity);
    void RegisterDeleted(TEntity entity);

    void Commit();
    void Rollback();
}

interface IRepository<TKey, TEntity>
{
    TEntity FindById(TKey id);
    IEnumerable<TEntity> FindAll();

    void Add(TEntity entity);
    void Update(TEntity entity);
    void Delete(TEntity entity);
}

class Repository : IRepository<int, string>
{
    public Repository(IUnitOfWork<string> context)
    {
        this.context = context;
    }

    private IUnitOfWork<string> context;

    public void Add(string entity)
    {
        context.RegisterNew(entity);
    }

    public void Update(string entity)
    {
        context.RegisterDirty(entity);
    }

    public void Delete(string entity)
    {
        context.RegisterDeleted(entity);
    }

    /* Entity retrieval methods */
}

Я понимаю правильно, что объект единицы работы предназначен для обработки дополнения, обновления или удаления какого-либо объекта в базовом хранилище данных (в моем случае, служба каталогов, которой я общаюсь с через LDAP)? Если это правда, разве это не должно обрабатывать извлечение никаких объектов также? Почему то, что не часть предложенного интерфейса UoW?

5
задан Justin Rusbatch 2 July 2010 в 13:59
поделиться

1 ответ

Репозиторий отвечает за данные - получение, обновление и другие операции CRUD, обеспечивающие игнорирование постоянства.

A Unit Of Work (uow), как говорит Марин Фаулер:

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

uow будет координировать несколько операций с объектами - он может использовать или не использовать репозитории для сохранения этих изменений.

4
ответ дан 15 December 2019 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: