@@ -175,6 +175,11 @@ type DesignTime private() =
175175
176176 rowType
177177
178+ static member internal GetDataTableType dataRowType =
179+ let tableType = ProvidedTypeBuilder.MakeGenericType( typedefof<_ DataTable>, [ dataRowType ])
180+ let tableProvidedType = ProvidedTypeDefinition( " Table" , Some tableType)
181+ tableProvidedType
182+
178183 static member internal GetOutputTypes ( outputColumns : Column list , resultType , rank : ResultRank , hasOutputParameters ) =
179184 if resultType = ResultType.DataReader
180185 then
@@ -185,9 +190,13 @@ type DesignTime private() =
185190 elif resultType = ResultType.DataTable
186191 then
187192 let dataRowType = DesignTime.GetDataRowType outputColumns
193+ let dataTableType = DesignTime.GetDataTableType dataRowType
194+
195+ // add .Row to .Table
196+ dataTableType.AddMember dataRowType
188197
189198 {
190- ProvidedType = ProvidedTypeBuilder.MakeGenericType ( typedefof <_ DataTable >, [ dataRowType ])
199+ ProvidedType = dataTableType
191200 ErasedToType = typeof< DataTable< DataRow>>
192201 ProvidedRowType = Some dataRowType
193202 ErasedToRowType = typeof< Void>
@@ -226,7 +235,6 @@ type DesignTime private() =
226235
227236 let tupleTypeName = tupleType.PartialAssemblyQualifiedName
228237 None, tupleType, <@@ Microsoft.FSharp.Reflection.FSharpValue.PreComputeTupleConstructor ( Type.GetType ( tupleTypeName)) @@>
229- //None, tupleType, <@@ fun values -> Type.GetType(tupleTypeName, throwOnError = true).GetConstructors().[0].Invoke(values) @@>
230238
231239 let nullsToOptions = QuotationsFactory.MapArrayNullableItems( outputColumns, " MapArrayObjItemToOption" )
232240 let combineWithNullsToOptions = typeof< QuotationsFactory>. GetMethod( " GetMapperWithNullsToOptions" )
@@ -241,7 +249,7 @@ type DesignTime private() =
241249 Some( typedefof<_ option>), typedefof<_ option>. MakeGenericType([| erasedToRowType |])
242250 else //ResultRank.ScalarValue
243251 None, erasedToRowType
244-
252+
245253 {
246254 ProvidedType =
247255 if providedRowType.IsSome && genericOutputType.IsSome
@@ -499,4 +507,4 @@ type DesignTime private() =
499507 if factoryMethodName.IsSome
500508 then
501509 yield upcast ProvidedMethod( factoryMethodName.Value, parameters2, returnType = cmdProvidedType, IsStaticMethod = true , InvokeCode = body2)
502- ]
510+ ]
0 commit comments