Я разрабатываю приложение, используя Entity Framework 4.1 Code First. Проблема в том, что когда я пытаюсь сгруппировать запрос, он автоматически добавляет заказ с помощью ключа группы, переопределяя предыдущие операторы orderby. Вот запрос:
using (var database = new Database())
{
var query = from frame in database.Set<Frame>()
orderby frame.DtStart, frame.DtStartMs
group frame by frame.ReadoutID;
Console.WriteLine(query.ToTraceString());
}
Когда я смотрю на сгенерированный sql (перехватывая объектный запрос dbquery), я получаю следующее:
SELECT
`Project2`.`devices_leituras_key`,
`Project2`.`C1`,
`Project2`.`devices_frames_key`,
`Project2`.`devices_key`,
`Project2`.`devices_leituras_key1`,
`Project2`.`devices_arquivos_key`,
`Project2`.`init_byte_arquivo`,
`Project2`.`dt_inicio`,
`Project2`.`dt_inicio_ms`,
`Project2`.`dt_fim`,
`Project2`.`dt_fim_ms`
FROM (SELECT
`Distinct1`.`devices_leituras_key`,
`Extent2`.`devices_frames_key`,
`Extent2`.`devices_key`,
`Extent2`.`devices_leituras_key` AS `devices_leituras_key1`,
`Extent2`.`devices_arquivos_key`,
`Extent2`.`init_byte_arquivo`,
`Extent2`.`dt_inicio`,
`Extent2`.`dt_inicio_ms`,
`Extent2`.`dt_fim`,
`Extent2`.`dt_fim_ms`,
CASE WHEN (`Extent2`.`devices_frames_key` IS NULL) THEN (NULL) ELSE (1) END AS `
C1`
FROM (SELECT DISTINCT
`Extent1`.`devices_leituras_key`
FROM `devices_frames` AS `Extent1`) AS `Distinct1` LEFT OUTER JOIN `devices_frames`
AS `Extent2` ON `Distinct1`.`devices_leituras_key` = `Extent2`.`devices_leituras_key
`) AS `Project2`
ORDER BY
`devices_leituras_key` ASC,
`C1` ASC
Обратите внимание, что существует некоторая привязка между POCO кадра и таблицей, например, свойство "ReadoutID" и "devices_leituras_key". Однако поле C1 отсутствует в таблице.
Вопросы:
Почему указанные упорядочения пропали (orderby frame.DtStart, frame.DtStartMs)?
Почему в поле ReadoutID появился другой странный порядок полей (ORDER BY devices_leituras_key
ASC, C1
ASC)?
Когда я удаляю группировку, исходный порядок применяется нормально.
Заранее спасибо