Exemple #1
0
        private IQueryable HandleMultipleSourceQueryable(object multipleSourceQueryableCandidate)
        {
            IDataFacadeQueryable multipleSourceQueryable = multipleSourceQueryableCandidate as IDataFacadeQueryable;

            if (multipleSourceQueryable == null)
            {
                return(null);
            }

            IQueryable queryable;

            if (!_pullAllToMemory && multipleSourceQueryable.Sources.Count == 1)
            {
                queryable = multipleSourceQueryable.Sources.First();
            }
            else
            {
                IQueryable[] sources = multipleSourceQueryable.Sources.ToArray();

                queryable = LoadToMemory(multipleSourceQueryable.InterfaceType, sources);
            }

            if (_queryable == null)
            {
                _queryable = queryable;
            }

            return(queryable);
        }
Exemple #2
0
        protected override Expression VisitConstant(ConstantExpression c)
        {
            if (c.Value is IDataFacadeQueryable)
            {
                IDataFacadeQueryable multibleSourceQueryable = (IDataFacadeQueryable)c.Value;

                _sourceCount += multibleSourceQueryable.Sources.Count();

                IDataFacadeQueryable found = _multibleSourceQueryables.Find(delegate(IDataFacadeQueryable queryable) { return(object.ReferenceEquals(multibleSourceQueryable, queryable)); });

                if (found == null)
                {
                    _multibleSourceQueryables.Add(multibleSourceQueryable);
                }
            }

            return(base.VisitConstant(c));
        }