Skip to content

Commit c9116ae

Browse files
Revert "Issue214 (#218)"
This reverts commit bc4252f.
1 parent bc4252f commit c9116ae

File tree

5 files changed

+15
-48
lines changed

5 files changed

+15
-48
lines changed

docs/content/output.fsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,6 @@ let table = (new QueryPersonInfoSingletoneDataTable()).AsyncExecute(PersonId = 2
113113
for row in table.Rows do
114114
printfn "Person info:Id - %i,FirstName - %O,LastName - %O" row.PersonID row.FirstName row.LastName
115115

116-
// you can refer to the table type
117-
let table2 : QueryPersonInfoSingletoneDataTable.Table = (new QueryPersonInfoSingletoneDataTable()).Execute(PersonId = 2)
118-
119-
// you can refer to the row type
120-
for row : QueryPersonInfoSingletoneDataTable.Table.Row in table2.Rows do
121-
printfn "Person info:Id - %i,FirstName - %O,LastName - %O" row.PersonID row.FirstName row.LastName
122-
123-
124116
(**
125117
126118
* Same as previous but using `SqlProgrammabilityProvider<...>`

src/SqlClient.Tests/DataTablesTests.fs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type ProductCostHistory = AdventureWorks.Production.Tables.ProductCostHistory
1717

1818
type GetRowCount = SqlCommandProvider<"SELECT COUNT(*) FROM HumanResources.Shift", ConnectionStrings.AdventureWorksNamed, SingleRow = true>
1919
type GetShiftTableData = SqlCommandProvider<"SELECT * FROM HumanResources.Shift", ConnectionStrings.AdventureWorksNamed, ResultType.DataReader>
20-
type GetArbitraryDataAsDataTable = SqlCommandProvider<"select 1 a, 2 b, 3 c", ConnectionStrings.AdventureWorksNamed, ResultType.DataTable>
20+
2121
type DataTablesTests() =
2222

2323
do
@@ -270,14 +270,3 @@ type DataTablesTests() =
270270
let t = new AdventureWorks.dbo.Tables.TableHavingColumnNamesWithSpaces()
271271
t.AddRow()
272272
Assert.Equal(1, t.Update())
273-
274-
[<Fact>]
275-
member __.``Can use Table type when ResultType = ResultType.DataTable`` () =
276-
let t : GetArbitraryDataAsDataTable.Table = (new GetArbitraryDataAsDataTable()).Execute()
277-
for (_: GetArbitraryDataAsDataTable.Table.Row) in t.Rows do
278-
()
279-
280-
Assert.NotNull(t)
281-
Assert.Equal(1, t.Rows.[0].a)
282-
Assert.Equal(2, t.Rows.[0].b)
283-
Assert.Equal(3, t.Rows.[0].c)

src/SqlClient/DesignTime.fs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ open FSharp.Data
1212

1313
type internal ResultTypes = {
1414
ProvidedType : Type
15+
ErasedToType : Type
1516
ProvidedRowType : ProvidedTypeDefinition option
16-
ErasedToRowType : Type
17+
ErasedToRowType : Type
1718
RowMapping : Expr
1819
} with
1920

20-
static member SingleTypeResult( provided) = {
21+
static member SingleTypeResult(provided, ?erasedTo) = {
2122
ProvidedType = provided
23+
ErasedToType = defaultArg erasedTo provided
2224
ProvidedRowType = None
2325
ErasedToRowType = typeof<Void>
2426
RowMapping = Expr.Value Unchecked.defaultof<RowMapping>
@@ -173,11 +175,6 @@ type DesignTime private() =
173175

174176
rowType
175177

176-
static member internal GetDataTableType dataRowType =
177-
let tableType = ProvidedTypeBuilder.MakeGenericType(typedefof<_ DataTable>, [ dataRowType ])
178-
let tableProvidedType = ProvidedTypeDefinition("Table", Some tableType)
179-
tableProvidedType
180-
181178
static member internal GetOutputTypes (outputColumns: Column list, resultType, rank: ResultRank, hasOutputParameters) =
182179
if resultType = ResultType.DataReader
183180
then
@@ -188,13 +185,10 @@ type DesignTime private() =
188185
elif resultType = ResultType.DataTable
189186
then
190187
let dataRowType = DesignTime.GetDataRowType outputColumns
191-
let dataTableType = DesignTime.GetDataTableType dataRowType
192-
193-
// add .Row to .Table
194-
dataTableType.AddMember dataRowType
195188

196189
{
197-
ProvidedType = dataTableType
190+
ProvidedType = ProvidedTypeBuilder.MakeGenericType(typedefof<_ DataTable>, [ dataRowType ])
191+
ErasedToType = typeof<DataTable<DataRow>>
198192
ProvidedRowType = Some dataRowType
199193
ErasedToRowType = typeof<Void>
200194
RowMapping = Expr.Value Unchecked.defaultof<RowMapping>
@@ -232,6 +226,7 @@ type DesignTime private() =
232226

233227
let tupleTypeName = tupleType.PartialAssemblyQualifiedName
234228
None, tupleType, <@@ Microsoft.FSharp.Reflection.FSharpValue.PreComputeTupleConstructor (Type.GetType (tupleTypeName)) @@>
229+
//None, tupleType, <@@ fun values -> Type.GetType(tupleTypeName, throwOnError = true).GetConstructors().[0].Invoke(values) @@>
235230

236231
let nullsToOptions = QuotationsFactory.MapArrayNullableItems(outputColumns, "MapArrayObjItemToOption")
237232
let combineWithNullsToOptions = typeof<QuotationsFactory>.GetMethod("GetMapperWithNullsToOptions")
@@ -246,12 +241,13 @@ type DesignTime private() =
246241
Some( typedefof<_ option>), typedefof<_ option>.MakeGenericType([| erasedToRowType |])
247242
else //ResultRank.ScalarValue
248243
None, erasedToRowType
249-
244+
250245
{
251246
ProvidedType =
252247
if providedRowType.IsSome && genericOutputType.IsSome
253248
then ProvidedTypeBuilder.MakeGenericType(genericOutputType.Value, [ providedRowType.Value ])
254249
else erasedToType
250+
ErasedToType = erasedToType
255251
ProvidedRowType = providedRowType
256252
ErasedToRowType = erasedToRowType
257253
RowMapping = Expr.Call( combineWithNullsToOptions, [ nullsToOptions; rowMapping ])
@@ -503,4 +499,4 @@ type DesignTime private() =
503499
if factoryMethodName.IsSome
504500
then
505501
yield upcast ProvidedMethod(factoryMethodName.Value, parameters2, returnType = cmdProvidedType, IsStaticMethod = true, InvokeCode = body2)
506-
]
502+
]

src/SqlClient/SqlClientProvider.fs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -540,12 +540,7 @@ type public SqlProgrammabilityProvider(config : TypeProviderConfig) as this =
540540
addRedirectToISqlCommandMethod typeof<string> "ToTraceString"
541541

542542
commands.AddMember cmdProvidedType
543-
if resultType = ResultType.DataTable then
544-
// if we don't do this, we get a compile error
545-
// Error The type provider 'FSharp.Data.SqlProgrammabilityProvider' reported an error: type 'Table' was not added as a member to a declaring type <type instanciation name>
546-
output.ProvidedType |> cmdProvidedType.AddMember
547-
else
548-
output.ProvidedRowType |> Option.iter cmdProvidedType.AddMember
543+
output.ProvidedRowType |> Option.iter cmdProvidedType.AddMember
549544

550545
let designTimeConfig =
551546
let expectedDataReaderColumns =

src/SqlClient/SqlCommandProvider.fs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,8 @@ type public SqlCommandProvider(config : TypeProviderConfig) as this =
141141
do
142142
cmdProvidedType.AddMember(ProvidedProperty("ConnectionStringOrName", typeof<string>, [], IsStatic = true, GetterCode = fun _ -> <@@ connectionStringOrName @@>))
143143

144-
do
145-
if resultType = ResultType.Records then
146-
// Add .Record
147-
output.ProvidedRowType |> Option.iter cmdProvidedType.AddMember
148-
elif resultType = ResultType.DataTable then
149-
// add .Table
150-
output.ProvidedType |> cmdProvidedType.AddMember
144+
do //Record
145+
output.ProvidedRowType |> Option.iter cmdProvidedType.AddMember
151146

152147
do //ctors
153148
let designTimeConfig =
@@ -223,4 +218,4 @@ type public SqlCommandProvider(config : TypeProviderConfig) as this =
223218
reader.ReadToEnd())
224219
if not (task.Wait(TimeSpan.FromSeconds(1.))) then failwithf "Couldn't read command from file %s" path
225220
task.Result, Some watcher
226-
| _ -> commandTextOrPath, None
221+
| _ -> commandTextOrPath, None

0 commit comments

Comments
 (0)