Cosmos: "An item with the same key has already been added." when projecting owned collection element
- 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
Assessment
This issue has not been assessed yet.