private IFutureEnumerable <T> ExecuteQueryTreeFuture <T>(Expression queryExpression)
        {
            var tree = new QueryRelationTree();
            IFutureEnumerable <T> result = null;

            foreach (var path in IncludePaths)
            {
                tree.AddNode(path);
            }

            var leafs = tree.GetLeafs();

            leafs.Sort();
            var expressions = leafs.Aggregate(new ExpressionInfo(queryExpression), FetchFromPath).GetExpressions();
            var i           = 0;

            foreach (var expression in expressions)
            {
                if (i == 0)
                {
                    result = _queryProvider.ExecuteFuture <T>(expression);
                }
                else
                {
                    _queryProvider.ExecuteFuture <T>(expression);
                }
                i++;
            }
            return(result);
        }
Пример #2
0
        private IFutureEnumerable <T> ExecuteQueryTreeFuture <T>(Expression queryExpression)
        {
            IFutureEnumerable <T> result = null;
            var i = 0;

            foreach (var expression in GetExpressions(queryExpression))
            {
                if (i == 0)
                {
                    result = _queryProvider.ExecuteFuture <T>(expression);
                }
                else
                {
                    _queryProvider.ExecuteFuture <T>(expression);
                }
                i++;
            }
            return(result);
        }
Пример #3
0
 private void CreateCriteriaOrFutures()
 {
     _mainCriteria = _session.CreateCriteria <T>().Add(Restrictions.In(_session.SessionFactory.GetClassMetadata(typeof(T)).IdentifierPropertyName, _ids)).SetTimeout(_timeoutInSeconds);
     if (_childNodesInfo != null)
     {
         bool rootHasList    = false; //only one list can be joined with the main query
         var  childCriterias = new List <ICriteria>();
         PopulateChildrenCriteria(_childNodesInfo, CriteriaTransformer.Clone(_mainCriteria), _mainCriteria, ref rootHasList, childCriterias);
         if (childCriterias.Count > 0 || _deferred)
         {
             _mainFuture   = _mainCriteria.Future <T>();
             _childFutures = childCriterias.Select(c => c.Future <T>()).ToList();
         }
     }
     else if (_deferred)
     {
         _mainFuture = _mainCriteria.Future <T>();
     }
 }
Пример #4
0
 public IEntityListWrapper <T> Deferred()
 {
     _deferred   = true;
     _mainFuture = _query.ToFuture();
     return(this);
 }