Whenever you commit/rollback a transaction you can not update an object unless you start a new transaction. This can be avoided by setting the scope.TransactionProperties.AutomaticBegin = true when working with the object scope and it must be explicitly started with container.Transaction.Begin() when using disconnected API.
Concerning your second post we would appreciate if you could send us a sample project where we can see your suggestion for the API in more details. I can assure you that it will be taken into consideration. The object container though is a "must" for the disconnected model. When updating objects, OpenAccess tracks the "Dirty" objects so updating accidentally an unwanted object is practically not possible.
I am looking forward for your future feedback, I am sure it will help in making OpenAccess more usable to the customers.
the Telerik team