Example #1
0
        private MemberInfo FindMemberSetByParameter(SelectQueryData.JoinSpec join, int paramIndex)
        {
            var newExpr = join.ResultSelector.Body as NewExpression;

            if (newExpr != null)
            {
                var index = newExpr.Arguments.TakeWhile(a => a != join.ResultSelector.Parameters[paramIndex]).Count();
                if (index < newExpr.Members.Count)
                {
                    return(newExpr.Members[index]);
                }
            }
            return(null);
        }
Example #2
0
        private string GetJoinClauseText(SelectQueryData.JoinSpec join)
        {
            var alias  = subQueryPrefix + join.ResultSelector.Parameters[1].Name;
            var member = FindMemberSetByParameter(join, 1);

            if (member != null)
            {
                aliases[member] = alias;
            }
            string innerData = "[" + nameResolver.ResolveTableName(join.InnerData.ModelType) + "]";
            var    clause    = string.Format(" {0} JOIN {1} [{2}] ON {3} = {4}",
                                             join.JoinType,
                                             GetJoinSourceSql(join.InnerData),
                                             alias,
                                             GetOuterKeyColumn(join.OuterKeySelector.Body),
                                             GetInnerKeyColumn(join.InnerKeySelector.Body, alias));

            if (lastTableAlias != null)
            {
                lastTableAlias = alias;
            }
            return(clause);
        }