internal static void Load <T>(T clientObject, params Expression <Func <T, object> >[] retrievals) where T : ClientObject
        {
            ClientObjectCollection clientObjectCollection = clientObject as ClientObjectCollection;

            if (retrievals == null || retrievals.Length == 0)
            {
                clientObject.Query.SelectAllProperties();
                if (clientObjectCollection != null)
                {
                    clientObject.Query.ChildItemQuery.SelectAllProperties();
                    return;
                }
            }
            else
            {
                DataRetrieval.QueryProcessInfo queryProcessInfo = new DataRetrieval.QueryProcessInfo();
                int num  = 0;
                int num2 = 0;
                for (int i = 0; i < retrievals.Length; i++)
                {
                    Expression <Func <T, object> >      expression            = retrievals[i];
                    DataRetrieval.QueryMethodAggregator queryMethodAggregator = new DataRetrieval.QueryMethodAggregator(expression);
                    DataRetrieval.ProcessQueryExpression(clientObject.Query, clientObject, expression.Body, true, queryProcessInfo, queryMethodAggregator);
                    queryMethodAggregator.Check();
                    if (queryMethodAggregator.Where > 0 || queryMethodAggregator.Take > 0)
                    {
                        num++;
                        if (num > 1)
                        {
                            throw new InvalidQueryExpressionException();
                        }
                    }
                    num2 += queryMethodAggregator.Include;
                    if (queryMethodAggregator.IsEmpty)
                    {
                        clientObject.Query.SelectAllProperties();
                        if (clientObjectCollection != null)
                        {
                            clientObject.Query.ChildItemQuery.SelectAllProperties();
                        }
                    }
                }
                if (clientObjectCollection != null && num2 == 0)
                {
                    clientObject.Query.ChildItemQuery.SelectAllProperties();
                }
                queryProcessInfo.FinalProcess();
            }
        }
Beispiel #2
0
        public IEnumerable <T> LoadQuery <T>(ClientObjectCollection <T> clientObjects) where T : ClientObject
        {
            if (clientObjects == null)
            {
                throw new ArgumentNullException("clientObjects");
            }
            ClientAction.CheckActionParameterInContext(this, clientObjects);
            ClientQueryableResult <T> clientQueryableResult = new ClientQueryableResult <T>();
            ClientQueryInternal       clientQueryInternal   = new ClientQueryInternal(clientObjects, null, false, null);

            clientQueryInternal.ChildItemQuery.SelectAllProperties();
            clientObjects.Context.AddQueryIdAndResultObject(clientQueryInternal.Id, clientQueryableResult);
            clientObjects.Context.AddQuery(clientQueryInternal);
            return(clientQueryableResult);
        }
Beispiel #3
0
        public IEnumerable <T> LoadQuery <T>(IQueryable <T> clientObjects) where T : ClientObject
        {
            if (clientObjects == null)
            {
                throw new ArgumentNullException("clientObjects");
            }
            ClientAction.CheckActionParameterInContext(this, clientObjects);
            ClientObjectCollection <T> clientObjectCollection = clientObjects as ClientObjectCollection <T>;

            if (clientObjectCollection != null)
            {
                return(this.LoadQuery <T>(clientObjectCollection));
            }
            ClientQueryable <T> clientQueryable = clientObjects as ClientQueryable <T>;

            if (clientQueryable != null)
            {
                return(DataRetrieval.Retrieve <T>(clientQueryable));
            }
            throw new NotSupportedException();
        }
Beispiel #4
0
 public EnumerableClientObjectCollection(ClientObjectCollection <T> collection)
 {
     this.m_collection = collection;
 }