private async Task <List <T> > GetListSyncOrAsync(bool sync, CancellationToken token = default(CancellationToken))
        {
            List <T> result;

            if (!_deferred)
            {
                CreateCriteriaOrFutures();
            }

            if (_mainFuture != null)
            {
                if (_childFutures != null)
                {
                    foreach (var cq in _childFutures) //we need to force execution: oracle client doesn't support multiple queries (for now)
                    {
                        if (sync)
                        {
                            cq.GetEnumerable();
                        }
                        else
                        {
                            await cq.GetEnumerableAsync(token);
                        }
                    }
                }
                if (sync)
                {
                    result = _mainFuture.GetEnumerable() as List <T>;
                }
                else
                {
                    result = await _mainFuture.GetEnumerableAsync(token) as List <T>;
                }
            }
            else
            {
                if (sync)
                {
                    result = _mainCriteria.List <T>() as List <T>;
                }
                else
                {
                    result = await _mainCriteria.ListAsync <T>(token) as List <T>;;
                }
            }

            if (_childNodesInfo != null)
            {
                NHUnitHelper.VisitNodes(result, _session, _childNodesInfo);
            }

            if (_unproxy)
            {
                return(NHUnitHelper.Unproxy(result, _session));
            }

            return(result);
        }
示例#2
0
        public async Task <T> GetValueSyncOrAsync(bool sync, CancellationToken token = default(CancellationToken))
        {
            T result;

            if (_deferred)
            {
                if (sync)
                {
                    result = _mainFuture.GetEnumerable().FirstOrDefault();
                }
                else
                {
                    var tmp = await _mainFuture.GetEnumerableAsync(token);

                    result = tmp.FirstOrDefault();
                }
            }
            else
            {
                if (sync)
                {
                    result = await _query.FirstOrDefaultAsync(token);
                }
                else
                {
                    result = _query.FirstOrDefault();
                }
            }

            if (result != null)
            {
                if (_childNodesInfo != null)
                {
                    NHUnitHelper.VisitNodes(result, _session, _childNodesInfo);
                }
                if (_unproxy)
                {
                    result = NHUnitHelper.Unproxy(result, _session);
                }
            }

            return(result);
        }