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); }
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); }
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>(); } }
public IEntityListWrapper <T> Deferred() { _deferred = true; _mainFuture = _query.ToFuture(); return(this); }