-
Notifications
You must be signed in to change notification settings - Fork 5
Custom conversions
Jacek edited this page Dec 1, 2018
·
9 revisions
SqlFun allows to intercept parameter creation. That is the moment conversions are applied.
Firstly, the parameter builder function must be defined:
let myParamBuilder (defaultPB: ParamBuilder) (prefix: string) (name: string) (expr: Expression) (names: string list) =
if expr.Type |> meetsSomeCriteria
then
[
prefix + name,
expr,
fun value (command: IDbCommand) ->
let param = new SqlClient.SqlParameter()
param.ParameterName <- "@" + name
if value <> null then
param.Value <- performTypeConversion (value)
command.Parameters.Add(param)
,
getDefaultValue expr.Type
]
else
defaultPB prefix name expr names
Then, instead of defaultParamBuilder, the custom one should be used in configuration code:
let createConnection () = new SqlConnection(connectionString)
let sql commandText = sql createConnection None myParamBuilder defaultRowBuilder commandText
let storedproc name = storedproc createConnection None myParamBuilder defaultRowBuilder name
let buildQuery ctx = FinalQueryPart(ctx, createConnection, myParamBuilder, defaultRowBuilder, string)