我正在尝试使用F#SqlDataProvider查询数据但是当我想使用groupBy函数时出现了奇怪的错误
我的初始代码:
r# "packages/FSharp.Data.2.2.5/lib/net40/FSharp.Data.dll"
r# "packages/SQLProvider.1.0.0/lib/FSharp.Data.SQLProvider.dll"
r# "packages/FSharp.Data.TypeProviders.5.0.0.2/lib/net40/FSharp.Data.TypeProviders.dll"
open FSharp.Data
open FSharp.Data.Sql
open FSharp.Data.TypeProviders
open FSharp.Linq
open System.Text.RegularExpressions
open System
open System.Data
type dbSchema = SqlDataProvider<
ConnectionString = "my-connection-string",
DatabaseVendor = Common.DatabaseProviderTypes.MSSQLSERVER,
IndividualsAmount = 1000,
UseOptionTypes = true>
let db = dbSchema.GetDataContext()
Run Code Online (Sandbox Code Playgroud)
我的查询:
query {
for county in db.Dbo.Countries do
groupBy county.CountryCode into g
select (g.Key, g.Count())
} |> Seq.iter (fun (key, count) -> printfn "%s %d" key count)
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
System.Exception:Microsoft.FSharp.Linq.QueryModule.clo上的Microsoft.FSharp.Linq.QueryModule.EvalNonNestedInner(CanEliminate canElim,FSharpExpr queryProducingSequence)上的Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.EvaluateQuotation(FSharpExpr e)中无法识别的方法调用. @ 1735-1.Microsoft-FSharp-Linq-ForwardDeclarations-IQueryMethods-Executea,b at.$ FSI_0003.main @()in C:\ Development\CountriesParser\Script1.fsx:line 36
线36是groupBy的精确线.
正如我在这些页面中读到的那样,它应该工作 http://fsprojects.github.io/FSharp.Linq.ComposableQuery/QueryExamples.html https://msdn.microsoft.com/en-us/library/hh225374.aspx
F# 有许多不同的 SQL 类型提供程序,我认为您的代码使用社区驱动的提供程序,groupBy
目前不支持该构造。
SqlDataProvider
来自SQLProvider
包并记录在此处。FSharp.Data.TypeProviders
库(也随 Visual Studio 一起分发)记录在此处并公开SqlDataConnection
类型。库 (1) 在很多方面都更好,但尚不支持完整的查询语言,因此您可能需要切换到 (2)。
为此,只需引用FSharp.Data.TypeProviders
(不需要其他两个包),然后按照有关该主题的 MSDN 演练SqlDataConnection
使用该类型