环境:
以下查询:
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
其他查询(包括联接)一直运行良好,但这是我尝试过的第一个左连接。
编辑:我已将代码示例简化为最小的再现示例。
答案 0 :(得分:3)
看起来截至2015年10月15日,leftOuterJoin不受SqlProvider支持
引用维护者pezipink对于外连接,不支持leftOuterJoin关键字,因为它要求我们实现groupJoin,而groupJoin又需要一些尚未完成的其他东西。如果您的连接位于具有外键设置的字段之间,则可以使用for ..语法中的特殊(!!)运算符将其连接到左连接,例如,对于prod in(!!)table1.MyForeignKey do ... < / p>