Btw. the reason seems to be :
Aurelius starts a transaction when the entities are initialized. This transaction comes directly from the connection. Also this transaction stays open as for now in my code no updates are made, just reading some stuff..
Now comes another object manager (a new one, see code from thread start), that states "UseTransaction := True" and "BeginTransaction". The code actually goes and checks in the cloned connection, if there is a transaction active (which is) and creates an empty Transaction adapter with no connection assigned, therefore my calls to Commit or Rollback are no executed, the TransactionAdapter ignores them without connection assigned.
I don't know, if it was the idea that you have only one transaction in the whole system. I think it should be per object manager. TObjectManager.Create states :
So at least I think it was planned like this. For firebird it does not make sense, as you always have to use transactions, but it could mean an AutoCommit when UseTransaction=False, and explicit transaction handling when True, which means I have to use StartTranaction/Commit
Otherwise I cannot have for example a MDI Db Application (as I do now), where every windows has its own database context. It cannot be that I click save in one window and it also saves the other ones, which I don't want to save.