Cosmos: project anonymous type with collection throws type mismatch in CosmosProjectionBindingExpressionVisitor
- 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
Assessment
This issue has not been assessed yet.