Partager via


Remplacement des valeurs SPMetal par défaut par un fichier XML de paramètres

Dernière modification : jeudi 10 mars 2011

S’applique à : SharePoint Foundation 2010

Dans cet article
Fichier XML des paramètres SPMetal
Règles SPMetal par défaut
Modification du comportement par défaut

Cette rubrique explique comment utiliser un fichier de balisage XML pour modifier le comportement par défaut de SPMetal quant au code qu’il génère, y compris les listes, types de contenu et colonnes qu’il expose dans le code généré.

La référence formelle du balisage XML utilisé dans le fichier commence dans la rubrique Schéma du code XML des paramètres de SPMetal.

Fichier XML des paramètres SPMetal

Un fichier XML de paramètres SPMetal contient le balisage XML qui fournit à SPMetal certains détails sur le code qu’il doit générer. En particulier, il spécifie les listes, types de contenu et champs (colonnes) qu’il doit présenter dans le code. Le fichier est transmis à SPMetal par l’option de ligne de commande /parameters. Pour plus d’informations sur les options de ligne de commande SPMetal, voir SPMetal.

Règles SPMetal par défaut

SPMetal ne nécessite pas un fichier XML de paramètres. En l’absence d’un tel fichier, il utilise ses règles par défaut. Si un fichier de paramètres est utilisé, SPMetal recourt à ses règles par défaut, sauf quand elles sont explicitement contredites par le fichier des paramètres. Pour plus d’informations sur ces règles, voir Règles de génération de code par défaut SPMetal.

Modification du comportement par défaut

Cette section explique comment vous pouvez modifier une partie du comportement par défaut de SPMetal avec le balisage d’un fichier XML de paramètres.

Web, élément

L’élément de niveau supérieur est <Web>. Définissez son attribut Class si vous ne voulez pas utiliser le nom que SPMetal attribuera par défaut à la classe dérivée de DataContext et qui représente tout le contenu du site Web. Définissez son attribut AccessModifier avec la valeur « Internal » si vous voulez que la classe générée soit internal (Friend en Microsoft Visual Basic). La valeur par défaut est Public.

List, élément

Si vous voulez modifier la façon dont SPMetal génère une propriété pour représenter une liste, ajoutez un élément <List> comme enfant à l’élément <Web>. Vous pouvez aussi ajouter un élément <List> pour obliger SPMetal à générer une classe pour une liste qu’il n’exposerait pas par défaut, telle qu’une liste cachée. Définissez son attribut Name obligatoire avec le nom de la liste.

Si vous ne voulez pas utiliser le nom que SPMetal attribuerait par défaut à la propriété qui représente la liste, utilisez l’attribut Member pour spécifier un autre nom. Par exemple, par défaut, SPMetal utilise « Calendar » comme nom de propriété d’une liste Calendrier. Vous pouvez modifier celle-ci en ScheduledEvents avec le balisage <List Name="Calendar" Member="ScheduledEvents"/>.

Si vous ne voulez pas que le type des éléments de la liste soit celui que SPMetal choisirait par défaut, définissez le paramètre Type avec un autre type. Par exemple, vous pouvez créer (dans un fichier de code distinct) une classe similaire à la classe que SPMetal créerait comme type d’élément de liste, si ce n’est qu’elle possède une propriété supplémentaire accessible en écriture. Vous pouvez définir votre classe comme type d’élément de liste et faire en sorte que le code appelant qui écrit sur cette propriété des éléments de liste soit retourné par une requête LINQ.

Notes

N’utilisez pas l’attribut Typede <List> pour simplement renommer la classe que SPMetal génère pour le type d’élément de liste. Utilisez à la place l’attribut Class d’un élément <ContentType> qui est un enfant de l’élément <List>. Voir ContentType, élément ci-après.

Il existe deux éléments enfants possibles de l’élément <List> : <ContentType> et <ExcludeContentType>. Ils fonctionnent de manière identique aux éléments de même nom qui sont les enfants de l’élément <Web>, sauf qu’ils s’appliquent aux types de contenu ayant comme étendue une liste plutôt que la totalité du site.

ExcludeList

Ajoutez cet élément enfant à l’élément <Web> pour empêcher SPMetal de générer une propriété d’une liste particulière. Définissez l’attribut Name obligatoire avec le nom de la liste.

ExcludeOtherLists, élément

Ajoutez cet élément enfant à l’élément <Web> pour empêcher SPMetal de générer les propriétés des listes qui ne sont pas explicitement représentées par les éléments <List>. Vous ne pouvez pas avoir cet élément et un élément <IncludeHiddenLists>.

IncludeHiddenLists, élément

Ajoutez cet élément enfant à l’élément <Web> pour contraindre SPMetal à générer les propriétés de toutes les listes masquées. Vous ne pouvez pas avoir cet élément et un élément <ExcludeOtherLists>.

ContentType, élément

Pour modifier la façon dont SPMetal génère une classe pour représenter un type de contenu, ajoutez un élément <ContentType> comme enfant de l’élément <Web> (ou de l’élément <List>). Vous pouvez aussi ajouter un élément <ContentType> pour obliger SPMetal à générer une classe pour un type de contenu qu’il n’exposerait pas par défaut, tel qu’un type de contenu masqué. Définissez l’attribut Name obligatoire de l’élément <ContentType> avec le nom du type de contenu. (Utilisez « Item » comme nom du type de contenu SharePoint Foundation de base.)

Si vous ne voulez pas utiliser le nom que SPMetal attribuerait par défaut à la classe qui représente le type de contenu, utilisez l’attribut Class pour spécifier un autre nom. Par exemple, si le site Web possède une liste Membres de l’équipe et que des colonnes lui sont ajoutées, par défaut, SPMetal crée une classe TeamMembersItem comme type des éléments de liste et spécifie celui-ci comme paramètre de type de la propriété EntityList<TEntity> qui représente la liste. Vous pouvez modifier le paramètre de type en une valeur plus lisible, telle que TeamMember, à l’aide du balisage suivant :

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

Définissez l’attribut AccessModifier avec la valeur « Internal » si vous voulez que la classe générée soit internal (Friend en Visual Basic). La valeur par défaut est Public Il n’y a pas d’autres options.

Column, élément

Ajoutez cet élément enfant à l’élément <ContentType> pour contraindre SPMetal à créer une propriété qui représente un champ (colonne) qu’il n’exposerait pas par défaut, tel qu’un champ masqué. Définissez l’attribut obligatoire Name avec le nom interne du champ. Si l’élément parent <ContentType> est enfant d’un élément <List>, vous pouvez également avoir des éléments <Column> qui représentent les champs présents dans la liste, mais non dans le type de contenu lui-même, ce qui peut se produire si une colonne a été ajoutée à une liste.

Si vous ne voulez pas utiliser le nom que SPMetal attribuerait par défaut à la propriété qui représente le champ, utilisez l’attribut Member pour spécifier un autre nom.

Si le champ est un champ de choix et que vous voulez que le type de la propriété qui expose le champ soit String, même si le champ n’autorise pas la saisie manuelle, définissez l’attribut Type avec la valeur « String ». (Par défaut, SPMetal va générer une déclaration d’une classe Enum à l’aide des valeurs autorisées spécifiées dans la définition de colonne de toute colonne de choix qui n’autorise pas la saisie manuelle.) Pour plus d’informations sur la façon dont LINQ to SharePoint fait correspondre les types de champ SharePoint Foundation et les types de données Microsoft .NET Framework 3.5, voir Mappage des types : depuis le fournisseur LINQ to SharePoint vers .NET.

ExcludeColumn, élément

Ajoutez cet élément enfant à l’élément <ContentType> pour empêcher SPMetal de générer une propriété d’un champ particulier (colonne). Définissez l’attribut Name obligatoire avec le nom interne du champ.

ExcludeOtherColumns, élément

Ajoutez cet élément enfant à l’élément <ContentType> pour empêcher SPMetal de générer les propriétés des colonnes qui ne sont pas explicitement représentées par les éléments <Column>. Vous ne pouvez pas avoir cet élément et un élément <IncludeHiddenColumns>.

IncludeHiddenColumns, élément

Ajoutez cet élément enfant à l’élément <ContentType> pour contraindre SPMetal à générer les propriétés de tous les champs masqués du type de contenu. Vous ne pouvez pas avoir cet élément et un élément <ExcludeOtherColumns>.

ExcludeContentType, élément

Ajoutez cet élément enfant à l’élément <Web> (ou à l’élément <List>) pour empêcher SPMetal de générer une classe d’un type de contenu particulier. Définissez l’attribut Name obligatoire avec le nom du type de contenu.

Notes

Vous ne pouvez pas empêcher la génération de classes pour un type de contenu si les autres classes de type de contenu générées hériteront de la classe bloquée. Par exemple, si vous avez essayé de bloquer la génération de classes pour le type de contenu non nommé SharePoint Foundation de base (appelé « Item ») avec un élément <ExcludeContentType Name="Item" />, vous devriez également ajouter les éléments <ExcludeContentType /> pour chaque classe de contenu qui hérite d’Item.

ExcludeOtherContentTypes, élément

Ajoutez cet élément enfant à l’élément <Web> pour empêcher SPMetal de générer les classes des types de contenu qui ne sont pas explicitement représentés par les éléments <ContentType>. Vous ne pouvez pas avoir cet élément et un élément <IncludeHiddenContentTypes>.

IncludeHiddenContentTypes, élément

Ajoutez cet élément enfant à l’élément <Web> pour contraindre SPMetal à générer les classes de tous les types de contenu masqués. Vous ne pouvez pas avoir cet élément et un élément <ExcludeOtherContentTypes>.

Exemple de fichier XML de paramètres SPMetal

<?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>

Voir aussi

Tâches

Procédure : utiliser SPMetal

Référence

SPMetal

Concepts

Schéma du code XML des paramètres de SPMetal

Règles de génération de code par défaut SPMetal

Mappage des types : depuis le fournisseur LINQ to SharePoint vers .NET