Доброго времени суток.
Вот читаю Фаулура...
Есть вопрос по поводу организации нескольких системных транзакций в одной бизнесс транзакции.
Как я понял для реализации бизнесс транзакции служит Unit of Work.
А для системных???
И как это можно откатить всю бизнесс транзакцию, если несколько системных транзакций прошли успешно, а некоторые провалились?
Или системные транзакции проводятся исключительно в памяти и в DB ничего не пишут, а когда фиксируется бизнесс транзакция то она уже и сбрасывает все изменения в базу, используя DB транзакцию???
Например:
Class UofW
{
private _tr as SqlTransaction;
private List _NewObjects as ArrayList = new ArrayList();
private List _DirtyObjects as ArrayList = new ArrayList();
private List _DeletedObjects as ArrayList = new ArrayList();
public void RegisterClean(DomainObject o);
public void RegisterNew(DomainObject o);
public void RegisterDirty(DomainObject o);
public void RegisterDeleted(DomainObject o);
public void Commit();
private void InsertNew();
private void DeleteRemoved();
private void UpdateDirty();
private void OpenDbTransaction();
private void CommitDbTransaction();
private void RollbackDbTransaction();
}
UofW.Commit()
{
try
{
OpenDbTransaction();
InsertNew();
DeleteRemoved();
UpdateDirty();
CommitDbTransaction();
}
catch (Exception ex)
{
RollbackDbTransaction();
Throw ex;
}
}
Или вопросами открытия, фиксации и роллбэка транзакций должен заниматься Бизнесс процесс, который создает UnitOfWork?
Тогда он-же должен открыть транзакцию и передать ее в UnitOfWork?
Заранее спасибо за разъяснения.