Как подразделение рабочего шаблона соответствует ссылкам на новые агрегаты?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как подразделение рабочего шаблона соответствует ссылкам на новые агрегаты?

Сообщение Anonymous »

фон < /strong> < /p>

Насколько я понимаю, шаблон единиц работы (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();
}
Предположим, что реализации Irepository Используйте реляционную базу данных, а реализация iunitofwork.commit просто устанавливает транзакцию с базой данных и поступления для вызова всех операций, которые были зарегистрированы. Я бы сказал, что я изложил выше, - это стандартная, прямая интерпретация агрегированного корня, репозитория и паттернов UOW (Nhibernate /EF и вся их раздутая слава). Например: < /p>

Код: Выделить всё

class User : IAggregate {
int Id { get; private set; }
}

class Blog : IAggregate {
int Id { get; private set; }
int AuthorUserId { get; set; }
}
< /code>

 Вопрос < /strong> < /p>

Учитывая вышеупомянутое разделение проблем и интерпретация агрегированных границ, как можно обеспечить транзакционную поддержку потребителям, которые транзакционно необходимо создать агрегат и сохранить свой идентификатор, сгенерированной репозиторием в другом агрегате? Например. Как я могу создать пользователя 
и блог транзакционно с помощью blog.userid установить на user.id ?>

Подробнее здесь: https://stackoverflow.com/questions/474 ... aggregates
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»