Поскольку это выполнение хранимой процедуры, все ваши прекрасные Skip
/ Take
в значительной степени избыточны в любом случае ... у нее нет другого выбора, кроме как вернуть все данные обратно (вызовы хранимых процедур не могут быть скомпонованы). Единственное, что он может сделать, это не материализовать объекты для некоторых из них.
Интересно, лучше ли было бы реорганизовать код, чтобы сделать два вызова:
int result = repository.FullTextSearchCount(searchText);
var result = repository.FullTextSearch(searchText, skip, take); // or similar
т.е. сделать параметры подкачки частью SPROC (и для фильтрации в базе данных, используя ROW_NUMBER()
/ OVER(...)
, или переменные таблиц, временные таблицы и т. д.), или, альтернативно, что-то похожее с параметром OUTPUT
в sproc:
int? count = null;
var result = repository.FullTextSearch(searchText, skip, take, ref count);
(мне кажется, что OUTPUT
становится ref
, поскольку TSQL OUTPUT
действительно является вводом-выводом)