Zugreifen auf SharePoint 2010-Listendaten mithilfe des LINQ to SharePoint-Anbieters

SharePoint-Videotutorial

Zusammenfassung: Informationen zum Verwenden des LINQ to SharePoint-Anbieters zum Hinzufügen und Lesen von Elementen in einer Microsoft SharePoint 2010-Liste mithilfe von LINQ (Language Integrated Query).

Letzte Änderung: Mittwoch, 12. September 2012

Gilt für: SharePoint Foundation 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio 2008 | Visual Studio 2010

**Bereitgestellt von:**Ted Pattison Critical Path Training (Microsoft SharePoint MVP)

Übersicht

Mit dem LINQ to SharePoint-Anbieter können Elemente in einer Microsoft SharePoint 2010-Liste hinzugefügt und gelesen werden. Für die in diesem Videotutorial beschriebene Technik muss das Hilfsprogramm SPMetal ausgeführt werden, um eine benutzerdefinierte Datenkontextklasse und Entitätsklassen zu erstellen. Mithilfe dieser Klassen können Sie auf SharePoint-Listendaten auf stark typisierte Weise zugreifen.

Code schreiben

Für den Zugriff auf Daten in einer SharePoint 2010-Liste mithilfe des LINQ to SharePoint-Anbieters müssen Sie mit dem Befehlszeilentool SPMetal (SPMetal.exe) Entitätsklassen generieren. Bei der Ausführung des Hilfsprogramms SPMetal an der Eingabeaufforderung müssen Sie die folgenden drei Parameter übergeben: die URL zur Website, welche die Liste enthält, einen Namespace zum Erstellen der Entitätsklassen sowie den Namen einer Ausgabedatei. (Geben Sie den gesamten Befehl in einer einzelnen Zeile ein. Durch die Zeilenumbrüche im folgenden Beispiel soll lediglich die Lesbarkeit erhöht werden.)

SPMETAL.EXE /web:http://intranet.wingtip.com 
            /namespace:WingtipIntranet 
            /code:WingtipIntranet.cs

Anzeigen von Listenelementen mithilfe eines DataGrid-Steuerelements von ASP.NET

Mit einem DataGrid-Steuerelement von Microsoft ASP.NET können Sie die Daten anzeigen, die von einer Abfrage zurückgegeben werden. Wenn Sie das AutoGenerateColumns-Attribut auf true festlegen, kann mit dem DataGrid-Steuerelement automatisch eine Rasterspalte für jedes Feld im Resultset erstellt werden.

<asp:DataGrid 
  ID="grdMain" 
  runat="server" 
  AutoGenerateColumns="true" />

Die Datenkontextklasse stellt eine Verbindung dar und muss demzufolge mithilfe der URL einer Zielwebsite initialisiert werden. Nachdem Sie eine Instanz der Datenkontextklasse erstellt haben, wird jede Liste in der Website als Eigenschaft verfügbar gemacht. Dadurch können Sie eine LINQ-Anweisung mit stark typisiertem Zugriff auf Listenspalten erstellen. Auf diese Weise können Sie auf einfache Weise eine Abfrage für eine SharePoint-Liste ausführen und das Ausgaberesultset an das DataGrid-Steuerelement von ASP.NET binden.

WingtipIntranetDataContext dc =
  new WingtipIntranetDataContext(SPContext.Current.Web.Url);

protected override void OnPreRender(EventArgs e) {

  var query = from DevelopersItem dev in dc.Developers
              where dev.SharePointDeveloper.Equals(true)
              orderby dev.Title, dev.FirstName
              select new {
                FirstName=dev.FirstName,
                LastName=dev.Title,
                SPDev=dev.SharePointDeveloper.ToString()
              };

  grdMain.DataSource = query;
  grdMain.DataBind();
}

Hinzufügen neuer Listenelemente

Die von SPMetal erstellten Datenkontext- und Entitätsklassen stellen eine einfache Methode für das Hinzufügen eines neuen Listenelements dar. SPMetal generiert eine Entitätsklasse für jede Liste in einer Zielwebsite. Wenn eine Website die Liste "Developers" enthält, generiert SPMetal die Entitätsklasse DevelopersItem mit einer Reihe von Eigenschaften, die den Listenspalten zugeordnet sind. Sie erstellen und initialisieren einfach eine Entitätsklasseninstanz. Anschließend rufen Sie die InsertOnSubmit-Methode und dann die SubmitChanges-Methode auf.

protected void cmdAddDeveloper_Click(object sender, EventArgs e) {
  DevelopersItem newDev =
    new DevelopersItem {
      FirstName = txtFirstName.Text,
      Title = txtLastName.Text,
      SharePointDeveloper = chkSharePointDeveloper.Checked
  };

  dc.Developers.InsertOnSubmit(newDev);
  dc.SubmitChanges();
}
Lesen

In SharePoint 2010 gibt es den neuen LINQ-Anbieter "LINQ to SharePoint", mit dem Sie auf SharePoint-Listendaten mithilfe von LINQ-Programmiertechniken zugreifen können. Die Verwendung des LINQ to SharePoint-Anbieters ist optional, bietet jedoch mehrere Vorteile im Vergleich zu älteren Techniken zum Abfragen und Aktualisieren von Listenelementen, wie beispielsweise die Verwendung des SharePoint-Objektmodells oder der CAML-Programmiersprache:

  • Mit "LINQ to SharePoint" ist CAML nicht mehr erforderlich.

  • Der Code ermöglicht den stark typisierten Zugriff auf die Spalten eines Listenelements.

  • Von Microsoft Visual Studio werden IntelliSense-Informationen basierend auf Listenspalten bereitgestellt, wenn Sie LINQ-Anweisungen in C# oder Microsoft Visual Basic erstellen.

  • Abfragen in LINQ sind wesentlich einfacher zu erstellen und zu verstehen als Abfragen in CAML.

Führen Sie für die Verwendung des LINQ to SharePoint-Anbieters die folgenden allgemeinen Schritte aus:

  1. Führen Sie SPMetal für die Zielwebsite aus, um Entitätsklassen zu generieren.

  2. Fügen Sie in Visual Studio die von SPMetal generierte Quelldatei Ihrem Projekt hinzu.

  3. Fügen Sie einen Projektverweis auf Microsoft.SharePoint.Linq hinzu.

  4. Programmieren Sie für den generierten Datenkontext und die generierten Entitätsklassen, um Listenelemente zu lesen und zu schreiben.

Anzeigen

Video ansehen

Video anschauen (00:20:01)

Erforschen

Informationen zum Autor

Ted Pattison ist Autor, Trainer und Mitbegründer von Critical Path Training, einem auf Schulungen zu SharePoint-Technologien spezialisierten Unternehmen. Als Microsoft SharePoint-MVP (Most Valuable Professional) arbeitet Ted Pattison häufig mit dem Developer Platform Evangelism-Team von Microsoft zusammen, um SharePoint-Schulungsunterlagen für Entwickler in einem frühen Stadium des Produktlebenszyklus (Alpha- und Betaphase) zu erstellen. Ted schreibt im MSDN Magazine die an Entwickler gerichtete Kolumne "Office Space".