【发布时间】:2016-04-02 04:20:42
【问题描述】:
环境:
- Windows 10
- PostgresSQL 9.5
- .NET 4.6.1
- Npgsql 3.0.5
- SQLProvider 0.0.11-alpha
以下查询:
query {
for timing in db.Public.Timings do
leftOuterJoin sensor in db.Public.Sensors on (timing.Transpondercode = sensor.Sensorcode) into r1
select timing
}
返回:
System.Exception: unrecognised method call
at Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter.EvaluateQuotation(FSharpExpr e)
at Microsoft.FSharp.Linq.QueryModule.EvalNonNestedInner(CanEliminate canElim, FSharpExpr queryProducingSequence)
at Microsoft.FSharp.Linq.QueryModule.clo@1735-1.Microsoft-FSharp-Linq-ForwardDeclarations-IQueryMethods-Execute[a,b](FSharpExpr`1 )
at AlphaFront.Db.getTimings(Double startTime, Double endTime) in C:\projects\AlphaFront\AlphaFront\Db.fs:line 488
包括联接在内的其他查询一直运行良好,但这是我尝试过的第一个左联接。
编辑:我已将代码示例简化为最小的复制示例。
【问题讨论】:
-
我在那里看到的唯一方法调用是
DefaultIfEmpty()。你试过删除它吗? -
是的,我有。是否存在该方法调用根本不会改变错误。
-
您是否使用 C# 标签搜索过错误(“无法识别的方法调用”)?例如Search text contains with QueryOver
-
我有,但到目前为止还没有发现任何明显适用的东西。我只检查简单类型的相等性。
-
我没有使用 PostgresSQL 9.5,但找到了 SQLProvider on Nuget is outdated (was Postgresql Missing Columns) 和 PostgreSQL Npgsql Versioning 解决方案是不使用 NuGet 版本并从站点安装最新版本。
标签: postgresql f# type-providers fsharp.data.typeproviders