У нас есть некоторые функции поиска, которые могут возвращать десятки тысяч результатов из БД, хотя он будет только извлекать строки, необходимые для отображения, например, в. первые 10 записей. Когда запрашивается следующая страница, мы снова нажимаем на БД. Он выполняет поиск в нашей базе данных на основе набора переменных, и этот поиск затем может быть уточнен, что приведет к другому попаданию в базу данных. Запрос довольно сложный.
Мы искали разные способы сделать это в соответствии с нашей общей архитектурой.
Первый способ - использовать хранимую процедуру, возможно, для заполнения списка сущностей. Этот сохраненный процесс может быстро стать большим и громоздким, но будет иметь лучшую производительность.
Второй способ - использовать Linq to Entites или Entity SQL с Entity Framework 4.0, создавать запрос в коде на всем нашем концептуальном уровне и заполнять объекты POCO через IQueryable. Это имеет следующие преимущества:
- Абстракция : мы используем EF в других местах приложения, поэтому мы хотели бы
поиск по абстрактной модели, если
возможный.
- Тип безопасности и мы можем связать фильтры в IQueryable для чистого выполнения того, что мы хотим сделать, в объектно-ориентированном виде
Нашей главной заботой при таком подходе является производительность. Мы надеемся использовать Parrlel LINQ для организаций и можем использовать больше оборудования, если это необходимо. Небольшой удар по производительности подходит для более чистого шаблона разработки.
Мы будем рады услышать мнения и рекомендации людей по этому поводу ... Мы новички во многих из этих технологий, поэтому хотели бы услышать опыт людей.