Насколько я понимаю, шаблон единиц работы (UOW) по существу обеспечивает семантику транзакций. Другими словами, учитывая домен агрегатов, которые сохраняются в соответствии с репозиториями, класс UOW позволяет потребителям домена зарегистрировать вызовы методов хранилища в атомную операцию. Скажите, что у нас есть: < /p>
Код: Выделить всё
interface IAggregate {
TKey Id { get; }
}
interface IRepository where TEntity : IAggregate {
TEntity Get(TKey id);
void Save(TEntity entity);
void Remove(TEntity entity);
}
interface IUnitOfWork {
void RegisterSave(TEntity entity);
void RegisterRemove(TEntity entity);
void RegisterUnitOfWork(IUnitOfWork uow);
void Commit();
void Rollback();
}
Код: Выделить всё
class User : IAggregate {
int Id { get; private set; }
}
class Blog : IAggregate {
int Id { get; private set; }
int AuthorUserId { get; set; }
}
< /code>
Вопрос < /strong> < /p>
Учитывая вышеупомянутое разделение проблем и интерпретация агрегированных границ, как можно обеспечить транзакционную поддержку потребителям, которые транзакционно необходимо создать агрегат и сохранить свой идентификатор, сгенерированной репозиторием в другом агрегате? Например. Как я могу создать пользователя
Подробнее здесь: https://stackoverflow.com/questions/474 ... aggregates