2012-04-20 3 views
9

SQL Server 2012 представляет более эффективный механизм для подкачки с использованием FETCH и OFFSET, что может сильно повлиять на производительность приложений, которые используют много пейджинга. Поддерживает ли Entity Framework 5 это? Итак, если Im, использующий EF на странице с помощью Take + Skip, запросы LINQ будут переведены в новый TSQL 2012 года, если EF нацелен на SQL Server 2012?Entity Framework и SQL Server 2012 Paging

+0

Не более эффективным. Более читабельна. –

+0

Fetch and Offset имеют преимущество в производительности, поскольку они уменьшают полезную нагрузку, возвращаемую SQL Server http://www.mssqltips.com/sqlservertip/2696/comparing-performance-for-different-sql-server-paging-methods/ – Judo

+0

@Judo Подходы, основанные на ROW_NUMBER, возвращают один и тот же набор результатов. Однако могут быть преимущества производительности по разным причинам. – John

ответ

9

EF 5 не поддерживает эту функцию - на самом деле, я думаю, что ни одна из функций SQL Serve 2012 не доступна в EF. Вы можете проголосовать за эту функцию на Data UserVoice, чтобы переместить ее в backlog.

11

Как @Ladislav сказал, EF 5 не поддерживает OFFSET & FETCH. С учетом сказанного я хотел добавить немного перспективы. Я не думаю, что это должно иметь большое значение.

Когда вы покупаете ORM, как Entity Framework, вы не подходите к поиску запросов (по вполне обоснованным причинам). Использует ли EF «старый» запрос стиля CTE с Row_Number() или новее Fetch/Offset - это деталь реализации. Microsoft может обновить EF-код в любой момент и изменить генерацию запроса для использования того или другого.

Если вы хотите контролировать генерацию запросов, вы либо:

  • Используйте EF в «хранится картирование процедура» способность
  • Используйте хранимые процедуры непосредственно с EF (что-то я довольно часто)
  • записи АДО/SQL самостоятельно или
  • использовать более ограниченный микро-ОРМ, как массивный/PetaPoco

Так оно имеет значение?

Ну, разработчик, задающий вопросы, новый синтаксис будет приятным облегчением. С другой стороны, это doesn't appear, что существует реальный performance difference between старый метод CTE и новый синтаксис. Итак, с точки зрения EF - не совсем. Мы берем на себя significant overhead с использованием EF, метод пейджинга, вероятно, не будет вашей точкой разрыва.