public virtual void FindQuerySourcesRequiringMaterialization( [NotNull] EntityQueryModelVisitor queryModelVisitor, [NotNull] QueryModel queryModel) { Check.NotNull(queryModelVisitor, nameof(queryModelVisitor)); Check.NotNull(queryModel, nameof(queryModel)); var requiresEntityMaterializationExpressionVisitor = new RequiresMaterializationExpressionVisitor(queryModelVisitor); _querySourcesRequiringMaterialization = requiresEntityMaterializationExpressionVisitor .FindQuerySourcesRequiringMaterialization(queryModel); foreach (var groupJoinClause in queryModel.BodyClauses.OfType <GroupJoinClause>()) { _querySourcesRequiringMaterialization.Add(groupJoinClause.JoinClause); } }
public override void VisitGroupJoinClause(GroupJoinClause groupJoinClause, QueryModel queryModel, int index) { _querySourcesRequiringMaterialization.Add(queryModel.MainFromClause); _querySourcesRequiringMaterialization.Add(groupJoinClause.JoinClause); var subQueryInnerSequence = groupJoinClause.JoinClause.InnerSequence as SubQueryExpression; if (subQueryInnerSequence != null) { var subQuerySourcesRequiringMaterialization = _requiresMaterializationExpressionVisitor .FindQuerySourcesRequiringMaterialization(subQueryInnerSequence.QueryModel); foreach (var subQuerySource in subQuerySourcesRequiringMaterialization) { _querySourcesRequiringMaterialization.Add(subQuerySource); } } }