Как сохранить данные в свойстве auto в сервисе для каждого запроса, отправляемого в Web API для конкретного пользователя?(не в сессии) - PullRequest
0 голосов
/ 22 февраля 2019

В таблице больше 60,000 records.Я использую Microsoft SQL Server 2016 (RTM-GDR).

Я планировал сохранить данные в DataTable property и извлекать только top 100 из данных, доступных в Datatable property одновременно.А затем удалите эти top 100 записи, чтобы обработка была лучше для каждого раза.

Сервисный код

public DataTable Records { get; set; }

В методе обслуживания

if(this.Records == null || this.Records.Count() == 0) 
{
     //For the first time add records to the `Records` data table.
}
else {
  //The Records already there.
 }

Код веб-API

[HttpGet]
public HttpResponseMessage GetReports()
{
  var tempReports = this.mService.GetReports();
  if (tempReports == null)
  {
    return ErrorResult(HttpStatusCode.NotFound);
  }

  return OK(tempReports );
}

Проблема

Это this.Records.Count() is 0 всегда, когда я отправляю new request для извлечения данных.

Данные добавляются successfully в таблицу данных Records, но не preserved.

Нужно ли что-то делать explicitly из веб-API для preserve записей для конкретного user?

1 Ответ

0 голосов
/ 22 февраля 2019

Прежде всего, Web Api не имеет состояния, и каждый запрос должен быть полностью независимым от предыдущего запроса, и если вы выбрали технологию без сохранения состояния, вам лучше быть верным ее спецификациям.
Что касается вашей озабоченности производительностьюИсходя из вашего кода, я думаю, что вы хотите сделать что-то вроде нумерации страниц.Позвольте мне предоставить вам пример кода, с помощью которого нумерация страниц обычно выполняется с использованием структуры сущностей:

var pagedList = yourDbContext.youEntityDbSet.OrderBy(x => x.Id)
                                .Skip(numberOfRecordToSkip)
                                .Take(numberOfRecordToTake)
                                .ToList();

numberOfRecordToSkip и numberOfRecordToTake должны быть добавлены в запрос на стороне клиента и не беспокоитьсяо производительности, так как одно соединение с базой данных на каждый запрос не имеет большого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...