dotnet / dotnet/efcore

Cosmos: "An item with the same key has already been added." when projecting owned collection element

Open
#34,335 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

query:

```cs
public virtual Task Json_collection_index_in_projection_basic(bool async)
=> AssertQuery(
async,
ss => ss.Set().Select(x => x.OwnedCollectionRoot[1]).AsNoTracking());
```

exception:

```
Message: 
System.ArgumentException : An item with the same key has already been added. Key: o0

Stack Trace: 
Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
Dictionary`2.Add(TKey key, TValue value)
CosmosProjectionBindingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 572
CosmosProjectionBindingExpressionVisitor.VisitExtension(Expression extensionExpression) line 236
CosmosProjectionBindingExpressionVisitor.Visit(Expression expression) line 135
CosmosProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression, Expression expression) line 76
CosmosQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression source, LambdaExpression selector) line 1024
QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 450
CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 247
QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 170
CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) line 247
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.VisitNew(NewExpression newExpression) line 689
CosmosProjectionBindingExpressionVisitor.Visit(Expression expression) line 107
CosmosProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression, Expression expression) line 70
CosmosQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression source, LambdaExpression selector) line 1024
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.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken) line 69
EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken) line 83
EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken) line 96
ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
```

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.