Запросы от кода со стороны сервера
Дата последнего изменения: 2 февраля 2010 г.
Применимо к: SharePoint Foundation 2010
В этой статье
Запросы с использованием CAML и SPQuery
Запросы с использованием поставщика LINQ для SharePoint
CAML или LINQ
В данном разделе представлен обзор различий между двумя способами формирования запросов данных Microsoft SharePoint Foundation в коде на стороне сервера.
Запросы с использованием CAML и SPQuery
Можно запрашивать любой вид данных SharePoint Foundation, включая данные, не принадлежащие спискам, с помощью обычной серверной объектной модели. Наиболее важный класс для осуществления запросов — SPQuery. Части запросов, написанные в Collaborative Application Markup Language (CAML), назначаются свойствам Query, Joins, ProjectedFields и ViewFields объекта SPQuery. Этот объект затем передается методу, такому как SPList.GetItems(), возвращающему запрашиваемые элементы.
Примеры см. в разделах Работа с объектами List и коллекциями и Возвращение элементов из списка.
Запросы с использованием поставщика LINQ для SharePoint
С помощью поставщика LINQ для SharePoint можно запрашивать только данные списков SharePoint Foundation. Запросы нужно писать в синтаксисе LINQ и назначать результаты возвращаемому объекту. Запрос выполняется первый раз при перечислении возвращаемого объекта. В это время запрос преобразуется поставщиком LINQ для SharePoint в запрос CAML и затем обрабатывается как любой другой запрос CAML. Дополнительные сведения см. в разделах в узле Управление данными с помощью LINQ в SharePoint.
CAML или LINQ
Главными преимуществами запросов CAML является возможность большей производительности, так как нет необходимости в преобразовании запросов в синтаксисе LINQ в синтаксис CAML.
Главные преимущества использования запросов LINQ включают следующие:
Можно использовать синтаксис и ключевые слова LINQ, встроенные в C# и Microsoft Visual Basic. В противоположность этому XML-код CAML может приводить к ошибкам и применяется только к SharePoint Foundation.
С помощью поставщика LINQ для SharePoint осуществляется работа с жестко типизированными объектами элементов списка. В клиентской объектной модели SharePoint Foundation любые два объекта SPListItem имеют одинаковый тип, даже если они представляют элементы из существенно различающихся видов списков. Однако поставщик LINQ для SharePoint использует классы сущностей, включая класс для каждого типа контента, используемого для всех списков веб-сайта. Например, элемент в списке "Announcements" является объектом типа Announcement, а элемент в списке "Tasks" является объектом типа Task.