【问题标题】:SqlProvider query errors with "unrecognized method call"带有“无法识别的方法调用”的 SqlProvider 查询错误
【发布时间】: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

包括联接在内的其他查询一直运行良好,但这是我尝试过的第一个左联接。

编辑:我已将代码示例简化为最小的复制示例。

【问题讨论】:

标签: postgresql f# type-providers fsharp.data.typeproviders


【解决方案1】:

截至 2015 年 10 月 15 日,SqlProvider 不支持 leftOuterJoin

引用 github 的维护者 pezipink

对于外连接,不支持 leftOuterJoin 关键字,因为它需要我们实现 groupJoin,而这又需要一堆尚未完成的其他东西。如果您的连接是在具有外键设置的字段之间,您可以通过使用 for.. 语法中的特殊 (!!) 运算符使其左连接,例如 for prod in (!!) table1.MyForeignKey do...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2014-09-22
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多