Пример #1
0
        public GetDataResult ServiceGetData(GetDataInfo getInfo)
        {
            GetDataResult res = null;

            this._currentOperation = ServiceOperationType.GetData;
            try
            {
                res = this.GetData(getInfo);
            }
            catch (Exception ex)
            {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                res = new GetDataResult()
                {
                    pageIndex = getInfo.pageIndex, pageCount = getInfo.pageCount,
                    rows      = new Row[0],
                    dbSetName = getInfo.dbSetName, totalCount = null, error = new ErrorInfo(ex.Message, ex.GetType().Name)
                };
                this.OnError(ex);
            }
            finally
            {
                this._currentOperation = ServiceOperationType.None;
            }
            return(res);
        }
Пример #2
0
        protected GetDataResult GetData(GetDataInfo getInfo)
        {
            var metadata = this.EnsureMetadataInitialized();
            List <MethodDescription> methodList = metadata.methodDescriptions;
            MethodDescription        method     = methodList.Where((m) => m.methodName == getInfo.queryName && m.isQuery == true).FirstOrDefault();

            if (method == null)
            {
                throw new DomainServiceException(string.Format(ErrorStrings.ERR_QUERY_NAME_INVALID, getInfo.queryName));
            }

            this.Authorizer.CheckUserRightsToExecute(method.methodInfo);
            getInfo.dbSetInfo = metadata.dbSets[getInfo.dbSetName];
            bool isMultyPageRequest = getInfo.dbSetInfo.enablePaging && getInfo.pageCount > 1;

            QueryResult   queryResult = null;
            int?          totalCount  = null;
            List <object> methParams  = new List <object>();

            methParams.Add(getInfo);
            for (var i = 0; i < method.parameters.Count; ++i)
            {
                methParams.Add(getInfo.paramInfo.GetValue(method.parameters[i].name, method, this.DataHelper));
            }
            queryResult = (QueryResult)method.methodInfo.Invoke(this, methParams.ToArray());

            IEnumerable entities = (IEnumerable)queryResult.Result;

            totalCount = queryResult.TotalCount;
            int rowCnt = 0;
            LinkedList <object> entityList = new LinkedList <object>();

            foreach (object entity in entities)
            {
                entityList.AddLast(entity);
                ++rowCnt;
            }
            var rows = this.CreateRows(getInfo.dbSetInfo, entityList, rowCnt);
            IEnumerable <IncludedResult> subResults = this.CreateIncludedResults(getInfo.dbSetInfo, entityList, queryResult.includeNavigations);

            GetDataResult res = new GetDataResult()
            {
                pageIndex  = getInfo.pageIndex,
                pageCount  = getInfo.pageCount,
                dbSetName  = getInfo.dbSetName,
                names      = getInfo.dbSetInfo.fieldInfos.Where(f => f.isIncludeInResult()).OrderBy(f => f._ordinal).Select(fi => fi.fieldName),
                totalCount = totalCount,
                extraInfo  = queryResult.extraInfo,
                rows       = rows,
                rowCount   = rowCnt,
                fetchSize  = getInfo.dbSetInfo.FetchSize,
                included   = subResults,
                error      = null
            };

            return((GetDataResult)res);
        }
Пример #3
0
 public IncrementalResult(GetDataResult res)
 {
     this.Data = res;
 }