diff --git a/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs b/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs index 90feaf7..45a8fe4 100644 --- a/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs +++ b/src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs @@ -165,7 +165,20 @@ namespace EntityFrameworkCore.Jet.Query.Sql.Internal if (tableExpression is InnerJoinExpression expression) { SqlBinaryExpression? binaryJoin = expression.JoinPredicate as SqlBinaryExpression; - tempcolexp = ExtractColumnExpressions(binaryJoin!); + SqlUnaryExpression? unaryJoin = expression.JoinPredicate as SqlUnaryExpression; + if (binaryJoin != null) + { + tempcolexp = ExtractColumnExpressions(binaryJoin!); + } + else if (unaryJoin != null) + { + tempcolexp = ExtractColumnExpressions(unaryJoin!); + } + else + { + tempcolexp = new List(); + } + bool refrencesfirsttable = false; foreach (ColumnExpression col in tempcolexp) { @@ -316,6 +329,20 @@ namespace EntityFrameworkCore.Jet.Query.Sql.Internal return result; } + private List ExtractColumnExpressions(SqlUnaryExpression unaryexp) + { + List result = new List(); + if (unaryexp.Operand is SqlBinaryExpression left) + { + result.AddRange(ExtractColumnExpressions(left)); + } + else if (unaryexp.Operand is ColumnExpression colLeft) + { + result.Add(colLeft); + } + + return result; + } protected override Expression VisitProjection(ProjectionExpression projectionExpression) {