Мы делаем несколько сложных запросов (с Dynami c, где, orderby, ...), поэтому мы в основном вынуждены делать запрос в сыром виде. Другой причиной может быть производительность, которая теряется с LINQ (или нет потери производительности).
Итак, мы создаем row_number для подсчета индекса последнего элемента (это для бесконечного загрузчика, который служит этот последний идентификатор, каждая перезагрузка). Запрос выглядит следующим образом:
return string.Format(@"SELECT vids.* FROM (
SELECT *, row_number() OVER (ORDER BY ""{0}"" {1}) AS Idx
FROM ""Videos""
{2} ORDER BY ""{0}"" {1}
) vids
{3}
ORDER BY ""{0}"" {1}", field, order, where, lastIdWhere);
Проблема в том, что Idx всегда равен 0 в результате. Мы уже протестировали RAW sql в базе данных, и там он работает без проблем.
Возможно, это проблема аннотации [NotMapped] в сущности Videos. Но нам это нужно, иначе приложение взломает sh, потому что в базе данных нет столбца для Idx.