@@ -141,9 +141,7 @@ type DesignTime private() =
141141 <@@ (%% Expr.Value( param.Name) : string), %% Expr.Coerce( value, typeof< obj>) @@>
142142 )
143143
144- let m = ProvidedMethod( name, executeArgs, providedOutputType)
145-
146- m.InvokeCode <- fun exprArgs ->
144+ let m = ProvidedMethod( name, executeArgs, providedOutputType, fun exprArgs ->
147145 let methodInfo = typeof< ISqlCommand>. GetMethod( name)
148146 let vals = mappedInputParamValues( exprArgs)
149147 let paramValues = Expr.NewArray( typeof< string * obj>, elements = vals)
@@ -180,7 +178,7 @@ type DesignTime private() =
180178 ps |> %% mapOutParamValues
181179 result
182180 @@>
183-
181+ )
184182 let xmlDoc =
185183 sqlParameters
186184 |> Seq.choose ( fun p ->
@@ -206,7 +204,7 @@ type DesignTime private() =
206204 |> Seq.tryFind ( fun ( _ , xs ) -> Seq.length xs > 1 )
207205 |> Option.iter ( fun ( name , _ ) -> failwithf " Non-unique column name %s is illegal for ResultType.Records." name)
208206
209- let recordType = ProvidedTypeDefinition( " Record" , baseType = Some typeof< obj>, HideObjectMethods = true )
207+ let recordType = ProvidedTypeDefinition( " Record" , baseType = Some typeof< obj>, hideObjectMethods = true )
210208 let properties , ctorParameters =
211209 columns
212210 |> List.mapi ( fun i col ->
@@ -216,8 +214,7 @@ type DesignTime private() =
216214
217215 let propType = col.GetProvidedType( ?unitsOfMeasurePerSchema = unitsOfMeasurePerSchema)
218216
219- let property = ProvidedProperty( propertyName, propType)
220- property.GetterCode <- fun args -> <@@ ( unbox< DynamicRecord> %% args.[ 0 ]).[ propertyName] @@>
217+ let property = ProvidedProperty( propertyName, propType, getterCode = fun args -> <@@ ( unbox< DynamicRecord> %% args.[ 0 ]).[ propertyName] @@>)
221218
222219 let ctorParameter = ProvidedParameter( propertyName, propType)
223220
@@ -227,15 +224,15 @@ type DesignTime private() =
227224
228225 recordType.AddMembers properties
229226
230- let ctor = ProvidedConstructor( ctorParameters)
231- ctor.InvokeCode <- fun args ->
227+ let ctor = ProvidedConstructor( ctorParameters, fun args ->
232228 let pairs = Seq.zip args properties //Because we need original names in dictionary
233229 |> Seq.map ( fun ( arg , p ) -> <@@ (%% Expr.Value( p.Name): string), %% Expr.Coerce( arg, typeof< obj>) @@>)
234230 |> List.ofSeq
235231 <@@
236232 let pairs : ( string * obj ) [] = %% Expr.NewArray( typeof< string * obj>, pairs)
237233 DynamicRecord ( dict pairs)
238- @@>
234+ @@>
235+ )
239236 recordType.AddMember ctor
240237
241238 recordType
@@ -261,10 +258,10 @@ type DesignTime private() =
261258 let propertyType = col.GetProvidedType( ?unitsOfMeasurePerSchema = unitsOfMeasurePerSchema)
262259
263260 let getter , setter = DesignTime.GetDataRowPropertyGetterAndSetterCode col
264- let property = ProvidedProperty( col.Name, propertyType, GetterCode = getter)
265-
266- if not col.ReadOnly then
267- property.SetterCode <- setter
261+ let property = ProvidedProperty( col.Name, propertyType, getterCode = getter, ?setterCode =
262+ if not col.ReadOnly
263+ then Some setter
264+ else None )
268265
269266 property
270267 )
@@ -278,42 +275,31 @@ type DesignTime private() =
278275
279276 let columnsType = ProvidedTypeDefinition( " Columns" , Some typeof< DataColumnCollection>)
280277
281- let columnsProperty = ProvidedProperty( " Columns" , columnsType)
282- tableProvidedType.AddMember columnsType
283-
284- columnsProperty.GetterCode <-
285- fun args ->
278+ let columnsProperty = ProvidedProperty( " Columns" , columnsType, getterCode = fun args ->
286279 <@@
287280 let table : DataTable < DataRow > = %% args.[ 0 ]
288281 table.Columns
289- @@>
290-
282+ @@>)
283+ tableProvidedType.AddMember columnsType
291284 tableProvidedType.AddMember columnsProperty
292285
293286 for column in outputColumns do
294287 let propertyType = ProvidedTypeDefinition( column.Name, Some typeof< DataColumn>)
295- let property = ProvidedProperty( column.Name, propertyType)
296-
297- property.GetterCode <- fun args ->
288+ let property = ProvidedProperty( column.Name, propertyType, fun args ->
298289 let columnName = column.Name
299290 <@@
300291 let columns : DataColumnCollection = %% args.[ 0 ]
301292 columns.[ columnName]
302- @@>
303-
293+ @@>)
294+
295+ let getter , setter = DesignTime.GetDataRowPropertyGetterAndSetterCode( column)
304296 let getValueMethod =
305297 ProvidedMethod(
306298 " GetValue"
307299 , [ ProvidedParameter( " row" , dataRowType)]
308300 , column.ErasedToType
309- )
310-
311- let getter , setter = DesignTime.GetDataRowPropertyGetterAndSetterCode( column)
312-
313- getValueMethod.InvokeCode <-
314- fun args ->
315- // we don't care of args.[0] (the DataColumn) because getter code is already made for that column
316- getter args.Tail
301+ , fun args -> getter args.Tail // we don't care of args.[0] (the DataColumn) because getter code is already made for that column
302+ )
317303
318304 let setValueMethod =
319305 ProvidedMethod(
@@ -323,12 +309,8 @@ type DesignTime private() =
323309 ProvidedParameter( " value" , column.ErasedToType)
324310 ]
325311 , typeof< unit>
312+ , fun args -> setter args.Tail // we don't care of args.[0] (the DataColumn) because setter code is already made for that column
326313 )
327-
328- setValueMethod.InvokeCode <-
329- fun args ->
330- // we don't care of args.[0] (the DataColumn) because setter code is already made for that column
331- setter args.Tail
332314
333315 propertyType.AddMember getValueMethod
334316 propertyType.AddMember setValueMethod
@@ -341,7 +323,7 @@ type DesignTime private() =
341323 ProvidedProperty(
342324 " Table"
343325 , tableProvidedType
344- , GetterCode =
326+ , getterCode =
345327 fun args ->
346328 <@@
347329 let row : DataRow = %% args.[ 0 ]
@@ -384,7 +366,7 @@ type DesignTime private() =
384366 @@>
385367
386368
387- ProvidedConstructor([], InvokeCode = ctorCode) |> tableProvidedType.AddMember
369+ ProvidedConstructor([], invokeCode = ctorCode) |> tableProvidedType.AddMember
388370
389371 tableProvidedType
390372
@@ -609,7 +591,7 @@ type DesignTime private() =
609591
610592 static member internal CreateUDTT ( t : TypeInfo ) =
611593 assert ( t.TableType)
612- let rowType = ProvidedTypeDefinition( t.UdttName, Some typeof< obj>, HideObjectMethods = true )
594+ let rowType = ProvidedTypeDefinition( t.UdttName, Some typeof< obj>, hideObjectMethods = true )
613595
614596 let parameters , sqlMetas =
615597 List.unzip [
@@ -627,8 +609,7 @@ type DesignTime private() =
627609 yield param, sqlMeta
628610 ]
629611
630- let ctor = ProvidedConstructor( parameters)
631- ctor.InvokeCode <- fun args ->
612+ let ctor = ProvidedConstructor( parameters, fun args ->
632613 let optionsToNulls = QuotationsFactory.MapArrayNullableItems( List.ofArray t.TableTypeColumns.Value, " MapArrayOptionItemToObj" )
633614
634615 <@@
@@ -644,7 +625,8 @@ type DesignTime private() =
644625 sqlDataRecordType.GetMethod( " SetValues" ) .Invoke( record, [| values |]) |> ignore
645626
646627 record
647- @@>
628+ @@>)
629+
648630 rowType.AddMember ctor
649631 rowType.AddXmlDoc " User-Defined Table Type"
650632
@@ -705,11 +687,11 @@ type DesignTime private() =
705687 let body1 ( args : _ list ) =
706688 Expr.NewObject( ctorImpl, designTimeConfig :: <@@ Connection.Choice1Of3 %% args.Head @@> :: args.Tail)
707689
708- yield ProvidedConstructor( parameters1, InvokeCode = body1) :> MemberInfo
690+ yield ProvidedConstructor( parameters1, invokeCode = body1) :> MemberInfo
709691
710692 if factoryMethodName.IsSome
711693 then
712- yield upcast ProvidedMethod( factoryMethodName.Value, parameters1, returnType = cmdProvidedType, IsStaticMethod = true , InvokeCode = body1)
694+ yield upcast ProvidedMethod( factoryMethodName.Value, parameters1, returnType = cmdProvidedType, isStatic = true , invokeCode = body1)
713695
714696 let parameters2 =
715697 [
@@ -734,14 +716,14 @@ type DesignTime private() =
734716 @@>
735717 Expr.NewObject( ctorImpl, [ designTimeConfig ; connArg; args.[ 2 ] ])
736718
737- yield upcast ProvidedConstructor( parameters2, InvokeCode = body2)
719+ yield upcast ProvidedConstructor( parameters2, invokeCode = body2)
738720 if factoryMethodName.IsSome
739721 then
740- yield upcast ProvidedMethod( factoryMethodName.Value, parameters2, returnType = cmdProvidedType, IsStaticMethod = true , InvokeCode = body2)
722+ yield upcast ProvidedMethod( factoryMethodName.Value, parameters2, returnType = cmdProvidedType, isStatic = true , invokeCode = body2)
741723 ]
742724
743725 static member private CreateTempTableRecord ( name , cols ) =
744- let rowType = ProvidedTypeDefinition( name, Some typeof< obj>, HideObjectMethods = true )
726+ let rowType = ProvidedTypeDefinition( name, Some typeof< obj>, hideObjectMethods = true )
745727
746728 let parameters =
747729 [
@@ -751,13 +733,12 @@ type DesignTime private() =
751733 yield param
752734 ]
753735
754- let ctor = ProvidedConstructor( parameters)
755- ctor.InvokeCode <- fun args ->
736+ let ctor = ProvidedConstructor( parameters, fun args ->
756737 let optionsToNulls = QuotationsFactory.MapArrayNullableItems( cols, " MapArrayOptionItemToObj" )
757738
758739 <@@ let values : obj [] = %% Expr.NewArray( typeof< obj>, [ for a in args -> Expr.Coerce( a, typeof< obj>) ])
759740 (%% optionsToNulls) values
760- values @@>
741+ values @@>)
761742
762743 rowType.AddMember ctor
763744 rowType.AddXmlDoc " Type Table Type"
@@ -815,10 +796,7 @@ type DesignTime private() =
815796 )
816797 |> List.fold ( fun acc x -> Expr.Sequential( acc, x)) <@@ () @@>
817798
818- let loadTempTablesMethod = ProvidedMethod( " LoadTempTables" , parameters, typeof< unit>)
819-
820- loadTempTablesMethod.InvokeCode <- fun exprArgs ->
821-
799+ let loadTempTablesMethod = ProvidedMethod( " LoadTempTables" , parameters, typeof< unit>, fun exprArgs ->
822800 let command = Expr.Coerce( exprArgs.[ 0 ], typedefof< ISqlCommand>)
823801
824802 let connection =
@@ -830,7 +808,7 @@ type DesignTime private() =
830808 create.ExecuteNonQuery() |> ignore
831809
832810 (%% loadValues exprArgs connection)
833- ignore() @@>
811+ ignore() @@>)
834812
835813 // Create the temp table(s) but as a global temp table with a unique name. This can be used later down stream on the open connection.
836814 use cmd = new SqlCommand( tempTableRegex.Replace( tempTableDefinitions, Prefixes.tempTable+ connectionId+ " $1" ), connection)
0 commit comments