Freigeben über


Außerkraftsetzen von SPMetal-Standardeinstellungen mit einer Parameter-XML-Datei

Letzte Änderung: Donnerstag, 10. März 2011

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
SPMetal-Parameter-XML-Datei
SPMetal-Standardwerte
Ändern des Standardverhaltens

In diesem Thema wird beschrieben, wie Sie mithilfe einer Datei mit XML-Markup das Standardverhalten von SPMetal im Hinblick auf den generierten Code ändern können. Dies betrifft auch die Listen, Inhaltstypen und Spalten, die im generierten Code modelliert werden.

Die offizielle Referenz für das in der Datei verwendete XML-Markup beginnt im Artikel SPMetal Parameters-XML-Schema.

SPMetal-Parameter-XML-Datei

Eine SPMetal-Parameter-XML-Datei enthält XML-Markup mit Einzelheiten über den Code, der von SPMetal generiert werden soll. Insbesondere wird angegeben, welche Listen, Inhaltstypen und Felder (Spalten) im Code modelliert werden müssen. Die Datei wird mit der Befehlszeilenoption /parameters an SPMetal übergeben. Weitere Informationen zu den Befehlszeilenoptionen für SPMetal finden Sie unter SPMetal.

SPMetal-Standardwerte

Eine Parameter-XML-Datei ist in SPMetal nicht erforderlich. Fehlt sie, werden die Standardregeln verwendet. Selbst wenn eine Parameterdatei verwendet wird, werden von SPMetal stets die Standardregeln verwendet, sofern ihnen nicht explizit durch die Parameterdatei widersprochen wird. Weitere Informationen zu diesen Regeln finden Sie unter Standardregeln für die Codegenerierung von SPMetal.

Ändern des Standardverhaltens

In diesem Abschnitt wird erklärt, wie Sie das Standardverhalten von SPMetal mit dem Markup in einer Parameter-XML-Datei teilweise ändern können.

Web (Element)

Das Element der obersten Ebene ist <Web>. Legen Sie sein Class-Attribut fest, wenn Sie nicht den von SPMetal vergebenen Standardnamen für die von DataContext abgeleitete Klasse verwenden möchten, die den gesamten Websiteinhalt repräsentiert. Legen Sie das AccessModifier-Attribut auf Internal fest, wenn die generierte Klasse internal (Friend in Microsoft Visual Basic) sein soll. Standardmäßig ist sie Public.

List (Element)

Wenn Sie ändern möchten, wie SPMetal eine Eigenschaft für eine Liste generiert, fügen Sie ein <List>-Element als untergeordnetes Element zum <Web>-Element hinzu. Sie können mit einem <List>-Element auch erzwingen, dass SPMetal eine Klasse für eine Liste generiert, die standardmäßig nicht modelliert werden würde, beispielsweise eine verborgene Liste. Legen Sie das obligatorische Name-Attribut auf den Namen der Liste fest.

Wenn Sie nicht den standardmäßig von SPMetal vergebenen Namen für die Eigenschaft verwenden möchten, die die Liste repräsentiert, geben Sie mithilfe des Member-Attributs einen alternativen Namen an. Beispielsweise wird von SPMetal standardmäßig Calendar als Eigenschaftenname für eine Kalenderliste verwendet. Sie können diesen Namen mit dem Markup <List Name="Calendar" Member="ScheduledEvents"/> in ScheduledEvents ändern.

Wenn Sie für die Elemente in der Liste einen anderen Typ angeben möchten, als von SPMetal standardmäßig festgelegt werden würde, legen Sie den Type-Parameter auf einen anderen Typ fest. Beispielsweise können Sie (in einer separaten Codedatei) eine Klasse erstellen, die bis auf eine zusätzliche beschreibbare Eigenschaft genau der Klasse entspricht, die von SPMetal als Listenelementtyp erstellt werden würde. Sie können Ihre Klasse als Listenelementtyp festlegen und von einer LINQ-Abfrage aufrufenden Code zurückgeben lassen, der in diese Eigenschaft der Listenelemente schreibt.

HinweisHinweis

Verwenden Sie nicht einfach das Type-Attribut von <List>, um die von SPMetal für den Listenelementtyp generierte Klasse umzubenennen. Verwenden Sie stattdessen das Class-Attribut eines <ContentType>-Elements, das dem <List>-Element untergeordnet ist. Weitere Informationen finden Sie weiter unten in diesem Thema unter ContentType (Element).

Es gibt zwei mögliche untergeordnete Elemente für das <List>-Element: <ContentType> und <ExcludeContentType>. Diese funktionieren genauso wie die gleichnamigen Elemente, die dem <Web>-Element untergeordnet sind, außer dass sie sich auf Inhaltstypen beziehen, deren Bereich auf eine Liste und nicht auf die komplette Website festgelegt ist.

ExcludeList

Fügen Sie dieses untergeordnete Element dem <Web>-Element hinzu, um das Generieren einer Eigenschaft für eine bestimmte Liste zu blockieren. Legen Sie das obligatorische Name-Attribut auf den Namen der Liste fest.

ExcludeOtherLists

Fügen Sie dieses untergeordnete Element dem <Web>-Element hinzu, um das Generieren von Eigenschaften für alle Listen zu blockieren, die nicht explizit durch <List>-Elemente repräsentiert werden. Dieses Element kann nicht zusammen mit einem <IncludeHiddenLists>-Element verwendet werden.

IncludeHiddenLists

Fügen Sie dieses untergeordnete Element dem <Web>-Element hinzu, um das Generieren von Eigenschaften für alle verborgenen Listen zu erzwingen. Dieses Element kann nicht zusammen mit einem <ExcludeOtherLists>-Element verwendet werden.

ContentType (Element)

Wenn Sie ändern möchten, wie SPMetal eine Klasse für einen Inhaltstyp generiert, fügen Sie ein <ContentType>-Element als untergeordnetes Element dem <Web>-Element (oder <List>-Element) hinzu. Sie können mit einem <ContentType>-Element auch erzwingen, dass SPMetal eine Klasse für einen Inhaltstyp generiert, der standardmäßig nicht modelliert werden würde, beispielsweise für einen verborgenen Inhaltstyp. Legen Sie das obligatorische Name-Attribut des <ContentType>-Elements auf den Namen des Inhaltstyps fest. (Verwenden Sie Element als Namen für den grundlegenden SharePoint Foundation-Inhaltstyp.)

Wenn Sie nicht den standardmäßig von SPMetal vergebenen Namen für die Klasse verwenden möchten, die den Inhaltstyp repräsentiert, geben Sie mithilfe des Class-Attributs einen alternativen Namen an. Wenn die Website beispielsweise eine Team Members-Liste enthält, der bereits Spalten hinzugefügt wurden, erstellt SPMetal standardmäßig eine TeamMembersItem-Klasse als Typ für die Listenelemente und gibt diese als Typparameter für die EntityList<TEntity>-Eigenschaft an, die die Liste repräsentiert. Mit folgendem Markup können Sie den Typparameter ändern und einen leichter lesbaren Text wie TeamMember verwenden:

<List Name="Team Members">
    <ContentType Name="Item" Class="TeamMember" />
</List>

Legen Sie das AccessModifier-Attribut auf Internal fest, wenn die generierte Klasse internal (Friend in Visual Basic) sein soll. Standardmäßig ist sie Public. Es gibt keine anderen Optionen.

Column (Element)

Fügen Sie dieses untergeordnete Element dem <ContentType>-Element hinzu, um zu erzwingen, dass SPMetal eine Eigenschaft für ein Feld (Spalte) erstellt, das standardmäßig nicht modelliert worden wäre, beispielsweise für ein verborgenes Feld. Legen Sie das obligatorische Name-Attribut auf den internen Namen der Liste fest. Wenn das übergeordnete <ContentType>-Element einem <List>-Element untergeordnet ist, kann es auch <Column>-Elemente geben, die Felder repräsentieren, die zwar in der Liste, aber nicht im Inhaltstyp selbst vorhanden sind. Dies kann passieren, wenn der Liste eine Spalte hinzugefügt wurde.

Wenn Sie nicht den standardmäßig von SPMetal vergebenen Namen für die Eigenschaft verwenden möchten, die das Feld repräsentiert, geben Sie mithilfe des Member-Attributs einen alternativen Namen an.

Wenn es sich bei dem Feld um ein Auswahlfeld handelt und der Typ der Eigenschaft, die das Feld modelliert, auch dann String sein soll, wenn das Feld keine Ausfülloptionen zulässt, legen Sie das Type-Attribut auf String fest. (Standardmäßig wird von SPMetal eine Deklaration einer enum-Klasse mit den zulässigen Werten generiert, die in der Spaltendefinition für eine choice-Spalte definiert sind, die keine Ausfülloptionen zulässt.) Weitere Information dazu, wie LINQ to SharePoint SharePoint Foundation-Feldtypen Microsoft .NET Framework 3.5-Datentypen zuordnet, finden Sie unter Typzuordnung: Von LINQ to SharePoint-Anbieter zu .NET.

ExcludeColumn (Element)

Fügen Sie dieses untergeordnete Element dem <ContentType>-Element hinzu, um das Generieren einer Eigenschaft für ein bestimmtes Feld (Spalte) zu blockieren. Legen Sie das obligatorische Name-Attribut auf den internen Namen des Felds fest.

ExcludeOtherColumns (Element)

Fügen Sie dieses untergeordnete Element dem <ContentType>-Element hinzu, um das Generieren von Eigenschaften für alle Spalten zu blockieren, die nicht explizit durch <Column>-Elemente repräsentiert werden. Dieses Element kann nicht zusammen mit einem <IncludeHiddenColumns>-Element verwendet werden.

IncludeHiddenColumns (Element)

Fügen Sie dieses untergeordnete Element dem <ContentType>-Element hinzu, um das Generieren von Eigenschaften für alle verborgenen Felder des Inhaltstyps zu erzwingen. Dieses Element kann nicht zusammen mit einem <ExcludeOtherColumns>-Element verwendet werden.

ExcludeContentType

Fügen Sie dieses untergeordnete Element dem <Web>-Element (oder dem <List>-Element) hinzu, um das Generieren einer Klasse für einen bestimmten Inhaltstyp zu blockieren. Legen Sie das obligatorische Name-Attribut auf den Namen des Inhaltstyps fest.

HinweisHinweis

Es ist nicht möglich, das Generieren einer Klasse für einen Inhaltstyp zu blockieren, wenn andere Inhaltstypklassen generiert werden, die von der blockierten Klasse erben. Wenn Sie beispielsweise versuchen, die Klassengenerierung für den einfachen unbenannten SharePoint Foundation-Inhaltstyp (namens Item) mit einem <ExcludeContentType Name="Item" />-Element zu blockieren, müssten Sie auch jeder Inhaltsklasse, die von Item erbt, <ExcludeContentType />-Elemente hinzufügen.

ExcludeOtherContentTypes

Fügen Sie dieses untergeordnete Element dem <Web>-Element hinzu, um das Generieren von Klassen für alle Inhaltstypen zu blockieren, die nicht explizit durch <ContentType>-Elemente repräsentiert werden. Dieses Element kann nicht zusammen mit einem <IncludeHiddenContentTypes>-Element verwendet werden.

IncludeHiddenContentTypes

Fügen Sie dieses untergeordnete Element dem <Web>-Element hinzu, um das Generieren von Klassen für alle verborgenen Inhaltstypen zu erzwingen. Dieses Element kann nicht zusammen mit einem <ExcludeOtherContentTypes>-Element verwendet werden.

Beispiel einer SPMetal-Parameter-XML-Datei

<?xml version="1.0" encoding="utf-8"?>
<Web AccessModifier="Internal" xmlns="https://schemas.microsoft.com/SharePoint/2009/spmetal">
  <ContentType Name="Contact" Class="Contact">
    <Column Name="ContId" Member="ContactId" />
    <Column Name="ContactName" Member="ContactName1" />
    <Column Name="Category" Member="Cat" Type="String"/>
    <ExcludeColumn Name="HomeTelephone" />
  </ContentType>
  <ExcludeContentType Name="Order"/>
  <List Name="Team Members" Type="TeamMember">
    <ContentType Name="Item" Class="TeamMember" />
  </List>
</Web>

Siehe auch

Aufgaben

Vorgehensweise: Verwenden von SPMetal

Referenz

SPMetal

Konzepte

SPMetal Parameters-XML-Schema

Standardregeln für die Codegenerierung von SPMetal

Typzuordnung: Von LINQ to SharePoint-Anbieter zu .NET