anchor.diff:  
   /// Executes and returns a data reader
   let internal execReaderInternal cmdType (cmgr: ConnectionManager) (sql: string) (parameters: #seq<Parameter>) =
  -    let create,dispose = cmgr
  +    let create,dispose,tx = cmgr
       let connection = create()
  -    use cmd = prepareCommand connection sql cmdType parameters
  +    use cmd = prepareCommand connection tx sql cmdType parameters
       let dispose() = dispose connection
       new DataReaderWrapper(cmd.ExecuteReader(), dispose) :> IDataReader
   
  
positive.code:         use tx = conn.BeginTransaction(isolation)
          logf "started tx %s" id
          try
              let r = f (withConnection conn)
              tx.Commit()
              logf "committed tx %s" id
              r
  
negative.code: open FsSqlPrelude
  
  /// Encapsulates how to create and dispose a database connection
  type ConnectionManager = (unit -> IDbConnection) * (IDbConnection -> unit) * (IDbTransaction option)
  
  /// Creates a <see cref="ConnectionManager"/> with an externally-owned connection
  let withConnection (conn: IDbConnection) : ConnectionManager =
  