dotnet / dotnet/efcore

Cosmos: project anonymous type with collection throws type mismatch in CosmosProjectionBindingExpressionVisitor

Open
#35,702 2 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
=> AssertQuery(
async,
ss => ss.Set().Select(
x => new
{
x.Id,
x.RequiredReferenceTrunk.RequiredReferenceBranch,
x.RequiredReferenceTrunk.RequiredReferenceBranch.OptionalReferenceLeaf,
x.RequiredReferenceTrunk.RequiredReferenceBranch.CollectionLeaf,
x.RequiredReferenceTrunk.CollectionBranch,
x.RequiredReferenceTrunk.RequiredReferenceBranch.OptionalReferenceLeaf!.Name
}));
```

error:

```
System.ArgumentException : Argument type 'System.Collections.Generic.IEnumerable`1[Microsoft.EntityFrameworkCore.TestModels.RelationshipsModel.RelationshipsBranchEntity]' does not match the corresponding member type 'System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.TestModels.RelationshipsModel.RelationshipsBranchEntity]' (Parameter 'arguments[4]')
Stack Trace:
at System.Linq.Expressions.Expression.ValidateNewArgs(ConstructorInfo constructor, ReadOnlyCollection`1& arguments, ReadOnlyCollection`1& members)
at System.Linq.Expressions.Expression.New(ConstructorInfo constructor, IEnumerable`1 arguments, IEnumerable`1 members)
D:\a\efcore\efcore\src\EFCore.Cosmos\Query\Internal\CosmosProjectionBindingExpressionVisitor.cs(695,0): at Microsoft.EntityFrameworkCore.Cosmos.Query.Internal.CosmosProjectionBindingExpressionVisitor.VisitNew(NewExpression newExpression)
D:\a\efcore\efcore\src\EFCore.Cosmos\Query\Internal\CosmosProjectionBindingExpressionVisitor.cs(107,0): at Microsoft.EntityFrameworkCore.Cosmos.Query.Internal.CosmosProjectionBindingExpressionVisitor.Visit(Expression expression)
D:\a\efcore\efcore\src\EFCore.Cosmos\Query\Internal\CosmosProjectionBindingExpressionVisitor.cs(76,0): at Microsoft.EntityFrameworkCore.Cosmos.Query.Internal.CosmosProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression, Expression expression)
D:\a\efcore\efcore\src\EFCore.Cosmos\Query\Internal\CosmosQueryableMethodTranslatingExpressionVisitor.cs(980,0): at Microsoft.EntityFrameworkCore.Cosmos.Query.Internal.CosmosQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression source, LambdaExpression selector)
D:\a\efcore\efcore\src\EFCore\Query\QueryableMethodTranslatingExpressionVisitor.cs(498,0): at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
D:\a\efcore\efcore\src\EFCore.Cosmos\Query\Internal\CosmosQueryableMethodTranslatingExpressionVisitor.cs(237,0): at Microsoft.EntityFrameworkCore.Cosmos.Query.Internal.CosmosQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
D:\a\efcore\efcore\src\EFCore\Query\QueryableMethodTranslatingExpressionVisitor.cs(63,0): at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.Translate(Expression expression)
D:\a\efcore\efcore\src\EFCore.Cosmos\Query\Internal\CosmosQueryableMethodTranslatingExpressionVisitor.cs(151,0): at Microsoft.EntityFrameworkCore.Cosmos.Query.Internal.CosmosQueryableMethodTranslatingExpressionVisitor.Translate(Expression expression)
D:\a\efcore\efcore\src\EFCore\Query\QueryCompilationContext.cs(207,0): at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutorExpression[TResult](Expression query)
D:\a\efcore\efcore\src\EFCore\Query\QueryCompilationContext.cs(174,0): at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
D:\a\efcore\efcore\src\EFCore\Storage\Database.cs(66,0): at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
D:\a\efcore\efcore\src\EFCore\Query\Internal\QueryCompiler.cs(127,0): at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
D:\a\efcore\efcore\src\EFCore\Query\Internal\QueryCompiler.cs(83,0): at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass11_0`1.b__0()
D:\a\efcore\efcore\src\EFCore\Query\Internal\CompiledQueryCache.cs(64,0): at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
D:\a\efcore\efcore\src\EFCore\Query\Internal\QueryCompiler.cs(79,0): at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteCore[TResult](Expression query, Boolean async, CancellationToken cancellationToken)
D:\a\efcore\efcore\src\EFCore\Query\Internal\QueryCompiler.cs(60,0): at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query)
D:\a\efcore\efcore\src\EFCore\Query\Internal\EntityQueryProvider.cs(62,0): at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute[TResult](Expression expression)
D:\a\efcore\efcore\src\EFCore\Query\Internal\EntityQueryable`.cs(78,0): at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

```

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.