По сути, сгенерированный SQL из Linq, похоже, игнорирует команду «Взять», когда мы включаем групповое объединение следующей таблицы счетов-фактур.
var queryCommand = from m in _context.CustomerInfo
join sq in customerAnalysisGroupQuery on m.CustomerInfoId equals sq.customerAnalysisGroupQueryCustomerInfoId
join igq in _context.Invoices on m.CustomerInfoId equals igq .invoicesGroupQueryCustomerInfoId into igq2
from igq in igq2.DefaultIfEmpty()
select new TableModelForServerPagination()
{
reportInfo = sq,
customerInfo = m,
invoicesInfo = igq
};
var queryList = queryCommand.Take(50).ToList();
Таблица счетов-фактур может содержать несколько счетов-фактур для каждый покупатель Запрос на анализ генерирует один анализ для каждого клиента.
Сгенерированный код SQL приводит к одному очень длинному запросу sql, который некорректно завершается командой Order by m.CustomerInfoId
Если мы опускаем В таблице счетов-фактур сгенерированный код приводит к одному очень длинному запросу sql, который корректно заканчивается LIMIT 50
. Прием неправильно сгенерированного запроса SQL и добавление к нему «LIMIT 50» дает те же результаты, что и правильно сгенерированный SQL запрос.
Мы используем MariaDB и entity. net core 3.1. Может ли кто-нибудь понять, что здесь произошло?