anchor.diff:                      |> Option.fold (fun acc col -> fst acc, col :: (snd acc)) (sparams, rcolumns)
               Root("Functions", Sproc({ Name = name; Params = (fun _ -> sparams); ReturnColumns = (fun _ _ -> rcolumns) })))
   
  -type internal PostgresqlProvider(resolutionPath, owner, referencedAssemblies) as this =
  +type internal PostgresqlProvider(resolutionPath, owner, referencedAssemblies) =
       let pkLookup = Dictionary<string,string>()
       let tableLookup = Dictionary<string,Table>()
       let columnLookup = Dictionary<string,Column list>()
  
positive.code: 
      let createUpdateCommand (con:IDbConnection) (sb:Text.StringBuilder) (entity:SqlEntity) changedColumns =
          let (~~) (t:string) = sb.Append t |> ignore
          let cmd = (this :> ISqlProvider).CreateCommand(con,"")
          cmd.Connection <- con
          let pk = pkLookup.[entity.Table.FullName]
          sb.Clear() |> ignore
  
negative.code: 
      let createInsertCommand (con:IDbConnection) (sb:Text.StringBuilder) (entity:SqlEntity) =
          let (~~) (t:string) = sb.Append t |> ignore
          let cmd = PostgreSQL.createCommand "" con
          cmd.Connection <- con
          let pk = pkLookup.[entity.Table.FullName]
          let columnNames, values =
              (([],0),entity.ColumnValues)
              ||> Seq.fold(fun (out,i) (k,v) ->
                  let name = sprintf "@param%i" i
                  let p = PostgreSQL.createCommandParameter (QueryParameter.Create(name,i)) v
                  (k,p)::out,i+1)
              |> fun (x,_)-> x
              |> List.rev
  