I think that would be adequate, thanks. Reading the documentation I would note:
The READ WRITE and READ ONLY modifiers set the transaction access mode. They permit or prohibit changes to tables used in the transaction. The READ ONLY restriction prevents the transaction from modifying or locking both transactional and nontransactional tables that are visible to other transactions; the transaction can still modify or lock temporary tables. These modifiers are available as of MySQL 5.6.5.
If no access mode is specified, the default mode applies. Unless the default has been changed, it is read/write.
Given the version limitation and desire to have a default (i.e. omit READ ONLY or READ WRITE) I take it only these overloads of BeginTransaction(Async) would write the modifiers.
I've tested this method and it doesn't work in all cases.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read only' at line 1
The offending code seems to be here. Basically if snapshot isolation is specified then the SQL that is executed is ... with consistent snapshot read only when it should be ... with consistent snapshot, read only.
I can tee up a pull request for it in my spare time, and/or log this as a new issue.