@@ -66,21 +66,16 @@ QueryExpressions CreateProjection(in ProjectionRequest request, LetPropertyMaps
6666 {
6767 var instanceParameter = Parameter ( request . SourceType , "dto" + request . SourceType . Name ) ;
6868 var projection = CreateProjectionCore ( request , instanceParameter , typeMap , letPropertyMaps ) ;
69- if ( polymorphicMaps . Length > 0 )
69+ foreach ( var derivedMap in polymorphicMaps )
7070 {
71- return new ( Include ( polymorphicMaps , request , projection , instanceParameter , letPropertyMaps ) , instanceParameter ) ;
71+ var sourceType = derivedMap . SourceType ;
72+ var derivedRequest = request . InnerRequest ( sourceType , derivedMap . DestinationType ) ;
73+ var derivedProjection = CreateProjectionCore ( derivedRequest , Convert ( instanceParameter , sourceType ) , derivedMap , letPropertyMaps ) ;
74+ projection = Condition ( TypeIs ( instanceParameter , sourceType ) , derivedProjection , projection , projection . Type ) ;
7275 }
7376 return letPropertyMaps . Count > 0 ?
7477 letPropertyMaps . GetSubQueryExpression ( this , projection , typeMap , request , instanceParameter ) :
7578 new ( projection , instanceParameter ) ;
76- Expression Include ( ReadOnlySpan < TypeMap > typeMaps , in ProjectionRequest request , Expression last , ParameterExpression instanceParameter , LetPropertyMaps letPropertyMaps )
77- {
78- var derivedMap = typeMaps [ 0 ] ;
79- var sourceType = derivedMap . SourceType ;
80- var derivedProjection = CreateProjectionCore ( request . InnerRequest ( sourceType , derivedMap . DestinationType ) , Convert ( instanceParameter , sourceType ) , derivedMap , letPropertyMaps ) ;
81- return Condition ( TypeIs ( instanceParameter , sourceType ) , derivedProjection ,
82- typeMaps . Length == 1 ? last : Include ( typeMaps [ 1 ..] , request , last , instanceParameter , letPropertyMaps ) , last . Type ) ;
83- }
8479 }
8580 private Expression CreateProjectionCore ( ProjectionRequest request , Expression instanceParameter , TypeMap typeMap , LetPropertyMaps letPropertyMaps )
8681 {
0 commit comments