Exemplo n.º 1
0
        public async Task <List <T> > ExecuteAsync()
        {
            if (_executed)
            {
                return(this.ToList <T>());
            }
            else
            {
                foreach (var exp in _matches)
                {
                    _expression.Translate(exp);
                }

                ParsedLinqToSql = _expression.Quary;

                if (!_partExecuted)
                {
                    this.AddRange(!string.IsNullOrEmpty(_expression.Quary) ? await _repository.WhereAsync <T>(_expression) : await _repository.GetAbstractAllAsync <T>());
                }
                if (_childrenToLoad.Any() || _loadcholdrenOnlyFirstLevel.HasValue)
                {
                    foreach (var item in this)
                    {
                        if (_childrenToLoad.Any())
                        {
                            await _repository.LoadChildrenAsync(item, false, _ignoreActions, _childrenToLoad.ToArray());
                        }
                        else
                        {
                            await _repository.LoadChildrenAsync(item, _loadcholdrenOnlyFirstLevel.Value, _ignoreActions);
                        }
                    }
                }
                _executed = true;
            }

            return(this.ToList <T>());
        }