コード例 #1
0
        public virtual IEnumerable <TResult> GetOrAddQueryResults <TResult>([NotNull] QueryTableRequest <TResult> request)
        {
            Check.NotNull(request, "request");

            return(_requestCache.GetOrAdd(new QueryKey(request.Table, request.Query),
                                          q => Connection
                                          .ExecuteRequest(request, Logger)
                                          .ToList() // prevent multiple execution
                                          ).Cast <TResult>());
        }
コード例 #2
0
        private static IEnumerable <TResult> ExecuteSelectExpression <TResult>(QueryContext queryContext, IEntityType entityType, SelectExpression selectExpression)
            where TResult : class, new()
        {
            var context = ((AtsQueryContext)queryContext);
            var table   = new AtsTable(entityType.TableName());
            var query   = context.TableQueryGenerator.GenerateTableQuery(selectExpression);
            var request = new QueryTableRequest <TResult>(
                table,
                query, s =>
                (TResult)context.QueryBuffer.GetEntity(
                    entityType,
                    context.ValueReaderFactory.Create(entityType, s)));

            return(context.GetOrAddQueryResults(request));
        }