I'm starting the transaction manually, using the parent business object (i.e. boParent.TransactionBegin()). Then I try to call GetDataSet() on a child object of boParent, passing it a SqlCommand object:
obParent.TransactionBegin();
...
...
boChild.GetDataSet(cmd);
The GetDataSet() call ends up calling mmDataAccessSql.FillDataSet(), but I think FillDataSet() then calls an overloaded version that does NOT call "CreateComand(string cmdText, IDbConnection connection)". And it looks like this overloaded version of "CreateCommand" has the necessary code to check to see if there's an existing transaction to use.