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); }
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); }
public IncrementalResult(GetDataResult res) { this.Data = res; }