F# groupBy - System.Exception:无法识别的方法调用

2024-04-02

我正在尝试使用 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()

我的查询:

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)

我收到这个错误:

System.Exception:无法识别的方法调用 在 Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.EvaluateQuotation(FSharpExpr e) 在 Microsoft.FSharp.Linq.QueryModule.EvalNonNestedInner(CanEliminate canElim,FSharpExpr queryProducingSequence) 在 Microsoft.FSharp.Linq.QueryModule.clo@1735-1.Microsoft-FSharp-Linq-ForwardDeclarations-IQueryMethods-Executea,b 位于 C:\Development\CountriesParser\Script1.fsx 中的 .$FSI_0003.main@():第 36 行

第 36 行正是 groupBy 的行。

当我在这些页面中阅读时,它应该可以工作http://fsprojects.github.io/FSharp.Linq.ComposableQuery/QueryExamples.html http://fsprojects.github.io/FSharp.Linq.ComposableQuery/QueryExamples.html https://msdn.microsoft.com/en-us/library/hh225374.aspx https://msdn.microsoft.com/en-us/library/hh225374.aspx


F# 有许多不同的 SQL 类型提供程序,我认为您的代码使用社区驱动的提供程序,该提供程序不支持groupBy此刻构建。

  1. 方式SqlDataProvider来自SQLProvider打包并记录here http://fsprojects.github.io/SQLProvider/.
  2. The FSharp.Data.TypeProviders库(也随 Visual Studio 一起分发)已记录here http://fsprojects.github.io/FSharp.Data.TypeProviders/并暴露SqlDataConnection type.
  3. 您还提到了 ComposableQuery 库记录here http://fsprojects.github.io/FSharp.Linq.ComposableQuery/,这是一个可以在 (2) 之上使用的扩展,但您没有在代码中执行此操作。

库 (1) 在很多方面都更好,但尚不支持完整的查询语言,因此您可能需要切换到 (2)。

为此,只需参考FSharp.Data.TypeProviders(你不需要其他两个包)然后使用SqlDataConnection类型,遵循有关该主题的 MSDN 演练 https://msdn.microsoft.com/en-us/library/hh361033.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

F# groupBy - System.Exception:无法识别的方法调用 的相关文章

随机推荐