The reason behind inventing the UOW was:
"Sometimes actions on entities span a longer timeframe and / or multiple screens. It's then often impossible to start a database transaction as user-interaction during a transaction should be avoided. To track all the changes made and to persist them in one transaction can then be a tedious task. With the UnitOfWork2 class this can be solved. The UnitOfWork2 class lets you collect actions on entities or collections of entities and can perform these actions in one go."
So nothing is done to the database when you start adding objects inside a UOW.
Until you call UOW.Commit(), passing in the parameters a DataAccessAdapter object (if you are using the Adapter scenario), or a Transaction object (if you are using SelfServicing).
Anyway the Commit() method starts a database transaction to execute all its actions within, only if there was no transaction already started in the passed parameter.
And please not the Commit method only commits a transaction if it was created inside it. Otherwise it will just excute the database actions.
So the following scenario is valid:
1- You start database transaction
2- Perform some database actions // outside a UOW
3- Call UOW.Commit() // which uses the previous transaction to execute its actions
4- Perform some database actions // outside a UOW
5- Commit or Roolback your database transaction. // which will physically commit or rollback every action excuted within the context of this transaction including those excecuted from within the UOW.