Exemple #1
0
        public static Results Detect(Expression selector, NameGenerator nameGenerator, ISessionFactory sessionFactory)
        {
            var detector = new LeftJoinDetector(nameGenerator, sessionFactory);

            var newSelector = detector.VisitExpression(selector);

            return new Results(newSelector, detector._joins.Values, detector._expressionMap);
        }
Exemple #2
0
        public static Results Detect(Expression selector, NameGenerator nameGenerator, ISessionFactory sessionFactory)
        {
            var detector = new LeftJoinDetector(nameGenerator, sessionFactory);

            var newSelector = detector.VisitExpression(selector);

            return(new Results(newSelector, detector._joins.Values, detector._expressionMap));
        }
        public override void VisitSelectClause(SelectClause selectClause, QueryModel queryModel)
        {
            var joins = LeftJoinDetector.Detect(selectClause.Selector, new NameGenerator(queryModel), _sessionFactory);

            if (joins.Joins.Count > 0)
            {
                selectClause.Selector = joins.Selector;

                queryModel.TransformExpressions(e => ExpressionSwapper.Swap(e, joins.ExpressionMap));

                foreach (var join in joins.Joins)
                {
                    queryModel.BodyClauses.Add(join);
                }
            }
        }