Я использую Dapper, чтобы выполнить пейджинговый запрос в большой таблице. Я использую следующую функцию:
public List<WarehouseLine> GetPagedWarehouseLines(int pageNumber, int rowsPerPage, string criteria) //todo
{
var query = @"SELECT *
FROM
(SELECT
*,
ROW_NUMBER() OVER (ORDER BY ProductDescr) AS RowNum
FROM
WarehouseLine) AS whl
WHERE
whl.RowNum BETWEEN ((@PageNumber - 1) * @RowsPerPage) + 1 AND @RowsPerPage * (@PageNumber)
AND (@Criteria)
ORDER BY ProductDescr";
return _db.Query<WarehouseLine>(query, new { PageNumber = pageNumber, RowsPerPage = rowsPerPage, Criteria = criteria }).ToList();
}
Переменная критерия представляет собой строку со следующим значением
(Productdescr like '%%') OR (PartNumber like '%%') OR (SerialNumber like '%%') OR(Manufacturer like '%%') OR (SpecialInstructions like '%%') OR (UDF3 like '%%') OR (producttags like '%%') OR (NotesPerPart like '%%')
Если не брать скобки, запрос отлично работает в SQL Server Management Studio. Но во время отладки я получаю следующую ошибку:
Выражение не-логического типа, указанное в контексте, где ожидается условие, около 'ORDER'.
Я использую последнюю стабильную версию Dapper.