dotnet / dotnet/efcore

Cosmos: "Bind property on structural type coming out of scalar subquery" for some complex-ish projection queries

Open
#34,348 0 comments 0 reactions 0 assignees View on GitHub
area-cosmos area-query
Dominant language
C#
Stars
14.8k
Forks
3.4k
PR merge metrics
PR metrics pending

Description

example:

```cs
public virtual Task Json_collection_index_in_projection_nested_project_collection(bool async)
{
var prm = 1;

return AssertQuery(
async,
ss => ss.Set()
.OrderBy(x => x.Id)
.Select(x => x.OwnedCollectionRoot[0].OwnedCollectionBranch[prm].OwnedCollectionLeaf)
.AsNoTracking(),
assertOrder: true,
elementAsserter: (e, a) => AssertCollection(e, a, ordered: true));
}
```

exception:

```
Message: 
System.NotImplementedException : Bind property on structural type coming out of scalar subquery

Stack Trace: 
CosmosSqlTranslatingExpressionVisitor.TryBindMember(Expression source, MemberIdentity member, Expression& expression, IPropertyBase& property, Boolean wrapResultExpressionInReferenceExpression) line 919
CosmosQueryableMethodTranslatingExpressionVisitor.TranslateMemberAccess(Expression source, MemberIdentity member) line 1405
QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 561
CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 247
QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 170
CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 247
QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 170
CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 247
CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 217
QueryableMethodTranslatingExpressionVisitor.Translate(Expression expression) line 62
CosmosQueryableMethodTranslatingExpressionVisitor.Translate(Expression expression) line 153
CosmosQueryableMethodTranslatingExpressionVisitor.TranslateSubquery(Expression expression) line 291
CosmosSqlTranslatingExpressionVisitor.g__TranslateAsSubquery|32_0(Expression expression) line 668
CosmosSqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 613
CosmosSqlTranslatingExpressionVisitor.TranslateInternal(Expression expression, Boolean applyDefaultTypeMapping) line 89
CosmosSqlTranslatingExpressionVisitor.Translate(Expression expression, Boolean applyDefaultTypeMapping) line 84
CosmosProjectionBindingExpressionVisitor.Visit(Expression expression) line 149
CosmosProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression, Expression expression) line 70
CosmosQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression source, LambdaExpression selector) line 1027
QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 450
CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 247
QueryableMethodTranslatingExpressionVisitor.Translate(Expression expression) line 62
CosmosQueryableMethodTranslatingExpressionVisitor.Translate(Expression expression) line 153
QueryCompilationContext.CreateQueryExecutorExpression[TResult](Expression query) line 231
QueryCompilationContext.CreateQueryExecutor[TResult](Expression query) line 199
Database.CompileQuery[TResult](Expression query, Boolean async) line 68
QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async) line 127
<>c__DisplayClass11_0`1.b__0() line 83
CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler) line 66
QueryCompiler.ExecuteCore[TResult](Expression query, Boolean async, CancellationToken cancellationToken) line 79
QueryCompiler.Execute[TResult](Expression query) line 60
EntityQueryProvider.Execute[TResult](Expression expression) line 64
EntityQueryable`1.GetEnumerator() line 78
List`1.ctor(IEnumerable`1 collection)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.