Поделиться через


Запрос SharePoint Foundation с помощью служб данных ADO.NET

Дата последнего изменения: 17 июня 2010 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Преимущества и недостатки использования платформы служб данных ADO.NET для запроса клиентов
Поддерживаемые типы клиентских приложений
Установка служб данных ADO.NET на сервер развертывания
Программирование служб данных ADO.NET с источником данных SharePoint

В этом разделе представлен краткий обзор запросов данных списка в Microsoft SharePoint Foundation с использованием Платформа служб данных ADO.NET, веб-службы REST. Этот раздел дает основные сведения о работе с этой платформой. Дополнительные сведения о программировании данной платформы см. в статьях Обзор: службы данных ADO.NET (Возможно, на английском языке) и Использование служб данных Microsoft ADO.NET (Возможно, на английском языке).

С помощью этой платформы можно также добавлять, изменять и удалять данные.

Преимущества и недостатки использования платформы служб данных ADO.NET для запроса клиентов

Основное преимущество использования платформы служб данных ADO.NET для запроса данных SharePoint Foundation у клиентского приложения заключается в том, что данные запроса строго типизированы. В клиентской объектной модели SharePoint Foundation любые два объекта ListItem — одного типа, даже если они представляют элементы из совершенно разных типов списков. Но службы данных ADO.NET используют сопоставление относительно объектов, которое создает тип для каждого списка в конечном контексте данных (веб-сайте). Например, элемент из списка объявлений типа AnnouncementsItem и элемент из списка задач типа TasksItem.

Основной недостаток использования служб данных ADO.NET для Framework для запроса данных SharePoint Foundation у клиентского приложения заключается в том, что данные можно получать только из списка и записывать их в список. Доступ к другим видам данных SharePoint не может быть получен с помощью служб данных ADO.NET.

Поддерживаемые типы клиентских приложений

Почти все типы клиентских приложений могут использовать службы данных ADO.NET для доступа к данным SharePoint Foundation, включая консольные приложения, приложения Windows Forms, приложения Windows Presentation Foundation и Silverlight.

Установка служб данных ADO.NET на сервер развертывания

Если службы данных ADO.NET еще не установлены на сервер развертывания, загрузите версию, соответствующую операционной системе.

СоветСовет

Есть версия этих служб, которая называется "службы данных WCF" и которая предназначена для Microsoft .NET Framework 4. SharePoint работает с Microsoft .NET Framework 3.5, поэтому не следует использовать WCF-версию.

Программирование служб данных ADO.NET с источником данных SharePoint

Программирование с использованием служб данных ADO.NET одинаково для различных источников данных. В проекте Microsoft Visual Studio 2010 добавьте службу RESTful, указав ее URL-адрес. Для SharePoint Foundation URL-адрес всегда выглядит так: http://сервер/путь_к_сайту/_vti_bin/listdata.svc, где путь_к_сайту — это путь к веб-сайту, доступ к спискам которого будет предоставлен клиенту. Пользователь должен указать имя ссылки на службы.

При добавлении ссылки службы данных ADO.NET создают сопоставление относительно объектов для списков веб-сайта и сохраняют его в поле reference.cs. Класс с именем имя сайтаDataContext, где имя сайта — это имя созданного веб-сайта, производного от класса DataServiceContext. Он содержит свойства для каждого списка веб-сайта. Тип каждого такого свойства — DataServiceQuery<TElement>, где параметр типа — это тип элемента, который заполняет список. Эти типы элементов объявлены в reference.cs. Имя каждого — имя_спискаItem, где имя_списка — это имя списка. Вот пример такого имени: AnnouncementsItemУ каждого такого типа элемента есть свойство для каждого поля (столбца) в списке.

Все в файле reference.cs находится в его собственном пространстве имен. Пространство имен формируется за счет объединения пространства имен проекта, например, того, что указывается в файле program.cs (или файле form.cs для приложения Windows Forms), и имени ссылки на службу. Например, если Contoso.SharePoint.Client — пространство имен проекта, а MySiteService — имя ссылки на службу, пространство имен сопоставления относительно объектов — Contoso.SharePoint.Client.MySiteService.

Можно создать логику программы таким же образом, как и для любого другого источника данных служб данных ADO.NET. Сначала добавьте оператор using для короткого имени пространства имен ссылки на службу внутри скобок пространства имен файла кода, который содержит такую логику, например, program.cs или form.cs. Далее представлен пример.

namespace Contoso.SharePoint.Client
{
    using MySiteService;
}

Следующий этап — получить ссылку на объект контекста данных, который служит шлюзом к объектом в сопоставлении. В следующем примере MyServer — имя сервера развертывания, а MySite — имя веб-сайта, поэтому MySiteDataContext — это класс, определенный в сопоставлении относительно объектов.

MySiteDataContext msdc = new MySiteDataContext(new Uri("http://MyServer/MySite/_vti_bin/listdata.svc"));

Затем можно запросить любой список веб-сайта с помощью синтаксиса запросов LINQ, как в этом примере.

var excitingAnnouncements = from announcement in msdc.Announcements
                            where announcement.Title.EndsWith("!")
                            select announcement;

Если в коде используется несколько запросов одного списка, сначала можно считать весь список в локальный объект List<T> и затем использовать его как источник для дальнейших запросов. Ниже представлен пример.

List<AnnouncmentsItem> allAnnouncements = msdc.Announcements.ToList();

var excitingAnnouncements = from announcement in allAnnouncements
                            where announcement.Title.EndsWith("!")
                            select announcement;

Можно сохранить изменения клиентского приложения в списке SharePoint Foundation с помощью метода SaveChanges(). Ниже представлен пример.

var excitingAnnouncements = from announcement in msdc.Announcements
                            where announcement.Title.EndsWith("!")
                            select announcement;

foreach (var announcement in excitingAnnouncements)
{
    announcement.Title += "!!";
}
msdc.SaveChanges();