anchor.diff:      cmd.Parameters.Add par |> ignore
       cmd
   
  -let internal prepareCommand (connection: #IDbConnection) (sql: string) (cmdType: CommandType) (parameters: (string * DbType * obj) list) =
  +let internal prepareCommand (connection: #IDbConnection) (sql: string) (cmdType: CommandType) (parameters: Parameter list) =
       let cmd = connection.CreateCommand()
       cmd.CommandText <- sql
       cmd.CommandType <- cmdType
  
positive.code:         p.DbType <- parameterType
          p.Value <- value
          cmd.Parameters.Add p |> ignore
      parameters |> Seq.iter addParam
      cmd
  
  let internal inferParameterDbType (p: string * obj) = 
      fst p, Unchecked.defaultof<DbType>, snd p
  
  let inferParameterDbTypes (p: (string * obj) list) = 
      p |> List.map inferParameterDbType
  
  let execReader (connection: #IDbConnection) (sql: string) (parameters: (string * DbType * obj) list) =
      use cmd = prepareCommand connection sql CommandType.Text parameters
      cmd.ExecuteReader()
  
  let execNonQuery (connection: #IDbConnection) (sql: string) (parameters: (string * DbType * obj) list) =
      use cmd = prepareCommand connection sql CommandType.Text parameters
      cmd.ExecuteNonQuery()
      
  
negative.code:           ParameterName = parameterName
            Value = value }
  
  let addParameter (p: Parameter) (cmd: #IDbCommand) =
      let par = cmd.CreateParameter()
      par.DbType <- p.DbType
      par.Direction <- p.Direction
  