Effectuer des requêtes sur SharePoint Foundation avec ADO.NET Data Services

Dernière modification : jeudi 17 juin 2010

S’applique à : SharePoint Foundation 2010

Dans cet article
Avantages et inconvénients de l’utilisation de l’infrastructure ADO.NET Data Services pour effectuer des requêtes auprès d’un client
Types d’applications clientes prises en charge
Installation d’ADO.NET Data Services sur votre serveur de développement
Programmation d’ADO.NET Data Services avec une source de données SharePoint

Cette rubrique contient une courte présentation de la façon d’effectuer des requêtes sur des données de liste dans Microsoft SharePoint Foundation en utilisant ADO.NET Data Services Framework, un service Web REST (Representational State Transfer). Cette rubrique suppose une connaissance de base de cette infrastructure. Pour des informations sur la façon de programmation avec cette infrastructure, voir Vue d’ensemble : ADO.NET Data Services (éventuellement en anglais) et Utilisation de Microsoft ADO.NET Data Services.

Vous pouvez aussi ajouter, modifier et supprimer des données à l’aide de l’infrastructure.

Avantages et inconvénients de l’utilisation de l’infrastructure ADO.NET Data Services pour effectuer des requêtes auprès d’un client

Le principal avantage de l’utilisation de l’infrastructure ADO.NET Data Services pour effectuer des requêtes sur des données SharePoint Foundation depuis une application cliente est que les données de liste sont fortement typées. Dans le modèle objet client SharePoint Foundation, deux objets ListItem ont le même type, même s’ils représentent des éléments appartenant à des types de listes très différents. Les services de données ADO.NET utilisent un mappage relationnel d’objets qui crée un type pour chaque liste dans un contexte de données cible (site Web). Par exemple, un élément d’une liste Announcements est d’un type appelé AnnouncementsItem et un élément d’une liste Tasks est d’un type appelé TasksItem.

Le principal désavantage de l’utilisation de l’infrastructure ADO.NET Data Services pour effectuer des requêtes sur des données SharePoint Foundation depuis une application cliente est que vous pouvez récupérer seulement des données de liste et écrire dans des listes. Les autres types de données SharePoint ne sont pas accessibles avec ADO.NET Data Services.

Types d’applications clientes prises en charge

Presque tous les types d’applications clientes peuvent utiliser ADO.NET Data Services pour accéder à des données SharePoint Foundation, y compris les applications console, les applications Windows Forms, les applications Windows Presentation Foundation et les applications Silverlight.

Installation d’ADO.NET Data Services sur votre serveur de développement

Si ADO.NET Data Services n’est pas déjà installé sur votre serveur de développement, téléchargez la version appropriée pour le système d’exploitation :

ConseilConseil

Il existe une version de ce service nommée « WCF Data Services » et destinée à Microsoft .NET Framework 4. Étant donné que SharePoint cible Microsoft .NET Framework 3.5, la version « WCF » ne doit pas être utilisée.

Programmation d’ADO.NET Data Services avec une source de données SharePoint

La programmation avec ADO.NET Data Services est essentiellement la même quelle que soit la source de données. Dans votre projet Microsoft Visual Studio 2010, vous ajoutez un service RESTful en spécifiant son URL. Pour SharePoint Foundation, l’URL est toujours http://serveur/chemin_accès_site/_vti_bin/listdata.svc, où chemin_accès_site est le chemin d’accès au site Web dont les données de liste feront l’objet d’accès par le client. Vous êtes invité à spécifier un nom pour la référence du service.

Lorsque vous ajoutez la référence, ADO.NET Data Services crée un mappage relationnel objet avec les listes du site Web et le stocke dans un fichier appelé reference.cs. Une classe nommée nom_du_siteDataContext, où nom_du_site est le nom du site Web, est créée ; elle dérive de la classe DataServiceContext. Elle a des propriétés pour chaque liste du site Web. Chacune de ces propriétés est du type DataServiceQuery<TElement> où le paramètre de type est le type d’élément qui se trouve dans la liste. Ces types d’éléments sont eux-mêmes déclarés dans reference.cs. Chacun de ces types est nommé nom_de_la_listeItem, où nom_de_la_liste est le nom d’une liste. Par exemple : AnnouncementsItem. Chacun de ces types d’éléments a une propriété pour chaque champ (colonne) de la liste.

Tout ce qui est dans le fichier reference.cs se trouve dans son propre espace de noms. L’espace de noms est construit par concaténation de l’espace de noms de votre projet, tel que l’espace de noms spécifié dans un fichier program.cs (ou un fichier form.cs pour une application Windows Forms) et du nom que vous avez spécifié pour la référence du service. Par exemple, si Contoso.SharePoint.Client est l’espace de noms de votre projet et que MySiteService est le nom que vous avez donné à la référence du service, l’espace de noms pour le mappage relationnel objet est Contoso.SharePoint.Client.MySiteService.

Vous créez la logique de votre programme de façon identique à ce que vous feriez avec toute autre source de données ADO.NET Data Services. Commencez par ajouter une instruction using pour le nom court de l’espace de noms de la référence du service à l’intérieur des accolades de l’espace de noms du fichier de code qui contiendra votre logique, tel que program.cs ou form.cs. Voici un exemple.

namespace Contoso.SharePoint.Client
{
    using MySiteService;
}

La prochaine étape importante est d’obtenir une référence à un objet de contexte de données, qui sert de passerelle vers les objets du mappage relationnel objet. Dans l’exemple suivant, MyServer est le nom d’un serveur de développement et MySite est le nom d’un site Web : MySiteDataContext est donc une classe définie dans le mappage relationnel objet.

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

Vous pouvez ensuite effectuer des requêtes sur n’importe quelle liste du site Web avec des requêtes formulées selon la syntaxe LINQ, comme dans cet exemple.

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

Si votre code effectue plusieurs requêtes sur la même liste, vous pouvez envisager de d’abord lire toute la liste dans un objet List<T> local puis d’utiliser cet objet en tant que source pour des requêtes ultérieures. Voici un exemple.

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

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

Vous pouvez enregistrer les modifications apportées aux données par l’application cliente dans la liste SharePoint Foundation avec la méthode SaveChanges(). Voici un exemple.

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

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