COM+ transactions or enterprise services transactions are fully supported. So if you're using adapter now, please check out the COM+ transactions section in the adapter documentation (in using the generated code -> adapter -> transactions)
You create one ComPlusAdapterContext instance which controls your multi-db transaction. It has already an adapter assigned to it, for the particular db.
You can use this ComPlusAdapterContext with adapters of other databases, by using this: (for example, the myComPlusAdapterContext is created from the Oracle db specific project and you now want to use it with sqlserver as well in a multi-db transaction. You create a small factory which accepts a name string for the type of adapter to create and optionally a ComPlusAdapterContextBase)
IDataAccessAdapter sqlserverAdapter = MyAdapterFactory.Create("SqlServer", myComPlusAdapterContext);
// which effectively does:
return new DataAccessAdapter(myComPlusAdapterContext);
And then from then on, the sqlserverAdapter uses a COM+ transaction, controlled by myComPlusAdapterContext, so commiting a transaction on the adapter won't commit the transaction unless you commit it on the ComPlusAdapterContext object.