Freigeben über


Abfragen von SharePoint Foundation mit ADO.NET Data Services

Letzte Änderung: Donnerstag, 17. Juni 2010

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
Vor- und Nachteile der Verwendung von ADO.NET Data Services Framework zum Abfragen eines Clients
Unterstützte Clientanwendungstypen
Installieren von ADO.NET Data Services auf dem Entwicklungsserver
Programmieren von ADO.NET Data Services mit einer SharePoint-Datenquelle

Dieses Thema enthält eine kurze Übersicht über das Abfragen von Listendaten in Microsoft SharePoint Foundation mithilfe von ADO.NET Data Services-Framework, einem REST-Webdienst (Representational State Transfer). In diesem Thema wird davon ausgegangen, dass Sie mit den Grundzügen dieses Frameworks vertraut sind. Weitere Informationen zum Programmieren mit diesem Framework finden Sie unter Übersicht: ADO.NET Data Services und Verwenden von Microsoft ADO.NET Data Services.

Sie können mithilfe des Frameworks auch Daten hinzufügen, ändern und löschen.

Vor- und Nachteile der Verwendung von ADO.NET Data Services Framework zum Abfragen eines Clients

Der Hauptvorteil der Verwendung von ADO.NET Data Services Framework zum Abfragen von SharePoint Foundation-Daten aus einer Clientanwendung besteht darin, dass Abfragelistendaten stark typisiert sind. Im SharePoint Foundation-Clientobjektmodell haben zwei beliebige ListItem-Objekt immer den gleichen Typ, auch wenn die Objekte Elemente aus völlig unterschiedlichen Listen darstellen. In ADO.NET Data Services wird jedoch eine objektrelationale Zuordnung verwendet, bei der für jede Liste in einem Zieldatenkontext (Website) ein Typ erstellt wird. Beispielsweise hat ein Element aus einer Ankündigungsliste den Typ AnnouncementsItem, und ein Element aus einer Aufgabenliste hat den Typ TasksItem.

Der Hauptnachteil der Verwendung von ADO.NET Data Services Framework zum Abfragen von SharePoint Foundation-Daten aus einer Clientanwendung besteht darin, dass Sie nur Listendaten abrufen und in Listen schreiben können.

Unterstützte Clientanwendungstypen

ADO.NET Data Services kann in fast jeder Clientanwendung, einschließlich Konsolenanwendungen, Windows Forms-Anwendungen, Windows Presentation Foundation-Anwendungen und Silverlight-Anwendungen, verwendet werden, um auf SharePoint Foundation-Daten zuzugreifen.

Installieren von ADO.NET Data Services auf dem Entwicklungsserver

Wenn ADO.NET Data Services nicht bereits auf dem Entwicklungsserver installiert ist, laden Sie die für das Betriebssystem geeignete Version herunter:

TippTipp

Eine Version dieses Diensts hat den Namen "WCF Data Services" und ist für Microsoft .NET Framework 4 konzipiert. Da SharePoint für Microsoft .NET Framework 3.5 konzipiert ist, sollte die WCF-Version nicht verwendet werden.

Programmieren von ADO.NET Data Services mit einer SharePoint-Datenquelle

Das Programmieren mit ADO.NET Data Services ist im Wesentlichen unabhängig von der Datenquelle immer gleich. Sie fügen im Microsoft Visual Studio 2010-Projekt einen REST-Dienst hinzu, indem Sie dessen URL angeben. Für SharePoint Foundation lautet die URL immer https://Server/Websitepfad/_vti_bin/listdata.svc, wobei Websitepfad der Pfad der Website ist, auf deren Listendaten über den Client zugegriffen werden soll. Sie werden aufgefordert, einen Namen für den Dienstverweis anzugeben.

Wenn Sie den Verweis hinzufügen, wird von ADO.NET Data Services eine objektrelationale Zuordnung zu den Listen auf der Website erstellt und in einer Datei mit dem Namen reference.cs gespeichert. Außerdem wird eine von der DataServiceContext-Klasse abgeleitete Klasse mit dem Namen WebsitenameDataContext erstellt, wobei Websitename der Name der Website ist. Die Klasse enthält Eigenschaften für die einzelnen Listen auf der Website. Jede dieser Eigenschaften hat den Typ DataServiceQuery<TElement>, wobei der Typparameter dem Typ des Elements entspricht, mit dem die Liste aufgefüllt wird. Diese Elementtypen selbst werden in reference.cs deklariert. Dabei wird jeweils der Name ListennameItem verwendet, wobei Listenname der Name einer Liste ist. Beispiel: AnnouncementsItem. Jeder dieser Elementtypen verfügt über eine Eigenschaft für jedes Feld (jede Spalte) in der Liste.

Der gesamte Inhalt der Datei reference.cs befindet sich in einem eigenen Namespace. Der Namespace wird erstellt durch Verketten des Namespace des Projekts (beispielsweise des in der Datei program.cs (oder form.cs für eine Windows Forms-Anwendung) angegebenen Namespace) mit dem Namen, den Sie dem Dienstverweis gegeben haben. Wenn beispielsweise Contoso.SharePoint.Client der Projektnamespace und MySiteService der Name des Dienstverweises ist, lautet der Namespace für die objektrelationale Zuordnung Contoso.SharePoint.Client.MySiteService.

Sie erstellen die Programmlogik auf die gleiche Weise wie bei jeder anderen ADO.NET Data Services-Datenquelle. Fügen Sie zunächst eine using-Anweisung für den Kurznamen des Dienstverweisnamespace in den Namespaceklammern der Codedatei hinzu, die die Logik enthalten soll (beispielsweise program.cs oder form.cs). Der folgende Code ist ein Beispiel dafür.

namespace Contoso.SharePoint.Client
{
    using MySiteService;
}

Der nächste wichtige Schritt besteht darin, einen Verweis auf ein Datenkontextobjekt abzurufen, das als Gateway für die Objekte in der objektrelationalen Zuordnung dient. Im folgenden Beispiel ist MyServer der Name eines Entwicklungsservers und MySite der Name einer Website. Daher ist MySiteDataContext eine in der objektrelationalen Zuordnung definierte Klasse.

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

Dann können Sie wie im folgenden Beispiel eine beliebige Liste auf der Website mit LINQ-Syntaxabfragen abfragen.

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

Wenn vom Code mehrere Abfragen für die gleiche Liste ausgeführt werden, ziehen Sie in Betracht, zuerst die gesamte Liste in ein lokales List<T>-Objekt zu lesen und dieses Objekt als Quelle für weitere Abfragen zu verwenden. Der folgende Code ist ein Beispiel dafür.

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

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

Sie können mit der SaveChanges()-Methode Änderungen an Daten in der Clientanwendung in der SharePoint Foundation-Liste speichern. Der folgende Code ist ein Beispiel dafür.

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

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