The DaoManager provides methods for working
    with connection and transaction. These methods allow you to demarcate
    connection/transactions and avoid having to pass transaction objects, like
    IDbTransaction, around to all of your DAOs.
Example 5.6. Example DAO transaction management
[C#]
Product p1 = new Product();
Product p2 = new Product();
Category c 1= new Category()
c1.Add(p1);
c2.Add(p2);
IDaoManager daoManager = DaoManager.GetInstance("PetStore"); 
ICategoryDao categoryDao = daoManager[typeof(ICategoryDao)] as ICategoryDao;
IProductDao productDao = daoManager[typeof(IProductDao)] as IProductDao;
try {
      daoManager.BeginTransaction();
      productDao.Insert(p1);
      productDao.Insert(p2);
      categoryDao.Insert(c1);
      daoManager.CommitTransaction();
}
catch {
        daoManager.RollBackTransaction();
}Calling BeginTransaction() lets the
    DaoManager know that you are interested in managing
    transactions programmatically. It is very important that you guarantee a
    call to RollBackTransaction() if you’ve called
    BeginTransaction(), which is why it is within the
    catch block. The call to
    RollBackTransaction() will rollback any changes
    you’ve made in case an exception is thrown before the call to
    CommitTransaction(). Be aware that if an
    exception occurs before BeginTransaction()
    completes and is caught in the catch block,
    RollBackTransaction() will also throw another exception since a
    transaction was not started.
When you deal with a connection and transaction, you can also use
    the using syntax as in the examples below.
[C#]
IDaoManager daoManager = DaoManager.GetInstance("PetStore"); 
IAccountDao accountDao = daoManager[typeof(IAccountDao)] as IAccountDao;
using ( IDalSession session = daoManager.OpenConnection() )
{
   Account account = NewAccount();
   accountDao.Create(account);
}
using ( IDalSession session = daoManager.BeginTransaction() )
{
   Account account = NewAccount();
   Account account2 = accountDao.GetAccountById(1);
   account2.EmailAddress = "someotherAddress@somewhere.com";
   accountDao.Create(account);
   accountDao.Update(account2);
   session.Complete(); // Commit
}