anchor.diff:              let parameters = ResizeArray<_>()
               let (~~) (t:string) = sb.Append t |> ignore
               
  -            // SQL query syntax is ordered in the following manner
  -            // SELECT [alias].[field] as '[alias].[field]' [, .. ]
  -            // FROM [TABLE_1] as [alias1] join [TABLE_2] as [Alias_2] on ...
  -            // WHERE (([TABLE_1].Field = cirtiera AND [TABLE_1].Field = cirtiera) OR [TABLE_1].Field = cirtiera ) ...
  -
  -            // to simplfy (ha!) the processing, all tables should be aliased.
  -            // the LINQ infrastructure will cause this will happen by default if the query includes more than one table
  -            // if it does not, then we first need to create an alias for the single table
  +       
               let getTable x =
                   match sqlQuery.Aliases.TryFind x with
                   | Some(a) -> a
  
positive.code:                 sqlQuery.Ordering
                  |> List.iteri(fun i (alias,column,desc) -> 
                      if i > 0 then ~~ ", "
                      ~~ (sprintf "%s.%s %s" alias column (if not desc then "DESC" else "")))
  
              // SELECT
              if sqlQuery.Distinct then ~~(sprintf "SELECT DISTINCT %s " columns)
              elif sqlQuery.Count then ~~("SELECT COUNT(1) ")
              else  ~~(sprintf "SELECT %s " columns)
              // FROM
              ~~(sprintf "FROM %s as %s " baseTable.Name baseAlias)       
              fromBuilder()
              // WHERE
              if sqlQuery.Filters.Length > 0 then
  
negative.code:                      Some { sproc with ReturnColumns = columns }
                    else None
                  with 
                  | ex -> System.Diagnostics.Debug.WriteLine(sprintf "Failed to retrieve metadata whilst executing sproc %s\r\n : %s" sproc.FullName (ex.ToString()))
                          None 
           )
  
  