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:     let dispose (c: IDisposable) = 
          c.Dispose()
          logf "disposing connection %s" id
      create,dispose
  
  let internal withCreateConnection (create: unit -> IDbConnection) : ConnectionManager = 
      let dispose x = ()
      create,dispose
  
  let internal doWithConnection (cmgr: ConnectionManager) f =
      let create,dispose = cmgr
      withResource create dispose f
      
  let internal PrintfFormatProc (worker: string * obj list -> 'd)  (query: PrintfFormat<'a, _, _, 'd>) : 'a =
  
negative.code:     cmd.Parameters.Add par |> ignore
      cmd
  
  let internal prepareCommand (connection: #IDbConnection) (tx: IDbTransaction option) (sql: string) (cmdType: CommandType) (parameters: #seq<Parameter>) =
      let cmd = connection.CreateCommand()
      cmd.CommandText <- sql
      cmd.Transaction <- 
          match tx with
          | None -> null
          | Some t -> t
      cmd.CommandType <- cmdType
      parameters |> Seq.iter (addParameter cmd >> ignore)
      cmd
  