Sto cercando di interrogare i dati con F # SqlDataProvider ma ho ottenuto strano errore quando mi piacerebbe utilizzare la funzione groupByF # groupBy - System.Exception: metodo non riconosciuta chiamata
il mio codice di inizializzazione:
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()
la mia domanda:
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)
ho ottenuto questo errore:
System.Exception: metodo non riconosciuta chiamata a Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.EvaluateQuotation (FSharpExpr e) a Microsoft.FSharp.Linq.QueryModule.EvalNonNestedInner (CanEliminate canElim, FSharpExpr queryProducingSequence) di Microsoft. FSharp.Linq.QueryModule.clo @ 1735-1.Microsoft-FSharp-Linq-ForwardDeclarations-IQueryMethods-Executea, b a. $ FSI_0003.main @() in C: \ Development \ CountriesParser \ Script1.fsx: riga 36
La riga 36 è la riga esatta di groupBy.
Come ho letto in queste pagine, dovrebbe funzionare http://fsprojects.github.io/FSharp.Linq.ComposableQuery/QueryExamples.html https://msdn.microsoft.com/en-us/library/hh225374.aspx
Non vedo nulla di immediatamente sbagliato qui - si può comprendere che le librerie sono voi referenziamento e quali spazi dei nomi sono aperti? E come viene creato il valore 'db'? –
Ho modificato la mia domanda e ho aggiunto il codice prima di eseguire una query, grazie –