Несколько СИСТЕМНЫХ транзакций в одной БИЗНЕСС.
От: val.maly Канада  
Дата: 28.01.06 21:24
Оценка:
Доброго времени суток.

Вот читаю Фаулура...

Есть вопрос по поводу организации нескольких системных транзакций в одной бизнесс транзакции.

Как я понял для реализации бизнесс транзакции служит 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?


Заранее спасибо за разъяснения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.