anchor.diff:  [<Test;Parallelizable>]
   let ``tx monad using`` () = 
       let c = withMemDb()
  -    let tran() = tx {
  +    let tran = tx {
           do! txInsert 3
           use! reader = Tx.execReader "select * from person" []
           let id = 
  
positive.code: [<Test;Parallelizable>]
  let ``tx monad error rollback`` () = 
      let c = withMemDb()
      let tran() = tx {
          let! x = Tx.execNonQuery "insert into person (id,name) values (@id, @name)" [P("@id",3);P("@name", "juan")]
          let! x = Tx.execNonQuery "select" []
          return ()
      }
      let result = tran() c // execute transaction
      match result with
      | Tx.Failed e -> 
          printfn "Error: %A" e
  
negative.code: [<Test;Parallelizable>]
  let ``tx monad ok`` () = 
      let c = withMemDb()
      let tran = tx {
          do! txInsert 3 
          do! txInsert 4
          return 8
      }
      let result = tran c // execute transaction
      match result with
      | Tx.Commit a -> Assert.AreEqual(8, a)
      | Tx.Failed e -> failwithe e "Transaction should not have failed"
  