Asp. net Предел данных лямбда-выражения - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть приложение asp. net (панель инструментов IoT), которое извлекает данные с сервера SQL и отображает информацию в виде графиков.

Сначала все работало нормально, но после Через несколько недель, когда объем данных увеличился, я начал получать ошибки в моих запросах GET (500: Внутренняя ошибка сервера).

У меня есть следующий код в моем контроллере для получения данных с сервера SQL

DBEntities db = new DBEntities();
string json_data="";

int last_id = db.tbl_data.Max(p => p.dataId);

DateTime _from_time = DateTime.ParseExact(from_time, @"d/M/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);
DateTime _to_time = DateTime.ParseExact(to_time, @"d/M/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);

IEnumerable<DashboardViewModel> value_table = db.tbl_data
    .Where(

    i =>
    i.dataDate >= _from_time
    &&
    i.dataDate <= _to_time
    )
    .Select(
    i => new DashboardViewModel
    {
        dataCatId = i.dataCatId,
        value = i.value,
        dataDate = i.dataDate
    })
    .ToList();




json_data = JsonConvert.SerializeObject(value_table);
return Json(json_data, JsonRequestBehavior.AllowGet);

Для устранения неполадок я добавил

.Take(20000)

перед .ToList();, который работает нормально, но, конечно, ограничивает данные.

Какое ограничение ? Пока не уверен, но пока я знаю, что между 20 000 и 24 000

Как мне преодолеть это ограничение? Мне нужно извлечь все данные

(Конечно, пользователь панели инструментов может выбирать разные диапазоны дат, но когда пользователь выбирает полный диапазон, код бэкэнда сможет его предоставить).

...