예제 #1
0
        public IIncludableQuery <TEntity, TNavigation> AndWhere(Expression <Func <TNavigation, bool> > predicate)
        {
            IncludeExpression prevIncludeExpression = this.QueryExpression as IncludeExpression;
            NavigationNode    startNavigation       = prevIncludeExpression.NavigationNode.Clone();
            NavigationNode    lastNavigation        = startNavigation.GetLast();

            lastNavigation.Condition = lastNavigation.Condition.And(predicate);

            IncludeExpression includeExpression = new IncludeExpression(typeof(TEntity), prevIncludeExpression.PrevExpression, startNavigation);

            return(new IncludableQuery <TEntity, TNavigation>(this.DbContext, this.TrackEntity, includeExpression));
        }
예제 #2
0
        IncludeExpression BuildThenIncludeExpression(LambdaExpression navigationPath)
        {
            IncludeExpression prevIncludeExpression = this.QueryExpression as IncludeExpression;
            NavigationNode    startNavigation       = prevIncludeExpression.NavigationNode.Clone();
            NavigationNode    lastNavigation        = startNavigation.GetLast();

            List <MemberExpression> memberExps = ExtractMemberAccessChain(navigationPath);

            for (int i = 0; i < memberExps.Count; i++)
            {
                PropertyInfo   member     = memberExps[i].Member as PropertyInfo;
                NavigationNode navigation = InitNavigationNode(member, this.DbContext);

                lastNavigation.Next = navigation;
                lastNavigation      = navigation;
            }

            IncludeExpression includeExpression = new IncludeExpression(typeof(TEntity), prevIncludeExpression.PrevExpression, startNavigation);

            return(includeExpression);
        }