"unrecognized method call" 的 SqlProvider 查询错误
SqlProvider query errors with "unrecognized method call"
环境:
- 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
}
returns:
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
包括联接在内的其他查询一直运行良好,但这是我尝试过的第一个左联接。
编辑:我已将代码示例简化为最小的重现示例。
从 2015 年 10 月 15 日开始,SqlProvider 不支持 leftOuterJoin
引用来自 github
的维护者 pezipink
For outer joins, the leftOuterJoin keyword is not supported as it requires us to implement groupJoin which in turns requires a bunch of other stuff that has not been done yet. If your join is between fields with foreign keys setup, you can get it to left join by using the special (!!) operator within the for.. syntax, eg for prod in (!!) table1.MyForeignKey do...
环境:
- 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
}
returns:
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
包括联接在内的其他查询一直运行良好,但这是我尝试过的第一个左联接。
编辑:我已将代码示例简化为最小的重现示例。
从 2015 年 10 月 15 日开始,SqlProvider 不支持 leftOuterJoin
引用来自 github
的维护者 pezipinkFor outer joins, the leftOuterJoin keyword is not supported as it requires us to implement groupJoin which in turns requires a bunch of other stuff that has not been done yet. If your join is between fields with foreign keys setup, you can get it to left join by using the special (!!) operator within the for.. syntax, eg for prod in (!!) table1.MyForeignKey do...