following query fails with NotImplementedException
let child = query {
for child in children do
leftOuterJoin parent in parents
on (child.ParentID = parent.ParentID) into result
for parent in result do
where (parent.Value1 = 6)
select child
headOrDefault
}
it seems that leftOuterJoin operator inserts call to DefaultIfEmpty in unexpected place and linq2db can't handle this.
at LinqToDB.Linq.Builder.SelectContext.GetContext(Expression expression, Int32 level, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\SelectContext.cs:line 802
at LinqToDB.Linq.Builder.SelectContext.<>c__DisplayClass53_0.<GetContext>b__0(IBuildContext ctx, Expression ex, Int32 l) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\SelectContext.cs:line 771
at LinqToDB.Linq.Builder.SelectContext.ProcessScalar[T](Expression expression, Int32 level, Func`4 action, Func`1 defaultAction) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\SelectContext.cs:line 885
at LinqToDB.Linq.Builder.SelectContext.GetContext(Expression expression, Int32 level, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\SelectContext.cs:line 768
at LinqToDB.Linq.Builder.SelectManyBuilder.SelectManyContext.GetContext(Expression expression, Int32 level, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\SelectManyBuilder.cs:line 217
at LinqToDB.Linq.Builder.TableBuilder.<>c__DisplayClass6_0.<BuildSequence>b__0(Int32 n, IBuildContext ctx) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\TableBuilder.cs:line 101
at LinqToDB.Linq.Builder.TableBuilder.Find[T](ExpressionBuilder builder, BuildInfo buildInfo, Func`3 action) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\TableBuilder.cs:line 65
at LinqToDB.Linq.Builder.TableBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\TableBuilder.cs:line 93
at LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\ExpressionBuilder.cs:line 177
at LinqToDB.Linq.Builder.SelectManyBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\SelectManyBuilder.cs:line 35
at LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\MethodCallBuilder.cs:line 22
at LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\ExpressionBuilder.cs:line 177
at LinqToDB.Linq.Builder.WhereBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\WhereBuilder.cs:line 18
at LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\MethodCallBuilder.cs:line 22
at LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\ExpressionBuilder.cs:line 177
at LinqToDB.Linq.Builder.SelectBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\SelectBuilder.cs:line 35
at LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\MethodCallBuilder.cs:line 22
at LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\ExpressionBuilder.cs:line 177
at LinqToDB.Linq.Builder.FirstSingleBuilder.BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\FirstSingleBuilder.cs:line 24
at LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(ExpressionBuilder builder, BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\MethodCallBuilder.cs:line 22
at LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(BuildInfo buildInfo) in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\ExpressionBuilder.cs:line 177
at LinqToDB.Linq.Builder.ExpressionBuilder.Build[T]() in G:\_websrc\_dotnet\linq2db\Source\Linq\Builder\ExpressionBuilder.cs:line 148
at LinqToDB.Linq.Query`1.GetQuery(IDataContextInfo dataContextInfo, Expression expr) in G:\_websrc\_dotnet\linq2db\Source\Linq\Query.cs:line 152
see PR #416 for test
Don Syme provided a workaround for this issue here
Most helpful comment
Don Syme provided a workaround for this issue here