De los documentos (para SQL Server compacto, pero aún relevante):
En el primer ejemplo, está abriendo una conexión en un ámbito de transacción. En la 2ª no te alistas.
Intenta agregar:
cmd.Connection.EnlistTransaction(Transaction.Current);
Para ver si eso ayuda.