Règles de génération de code par défaut SPMetal
Dernière modification : lundi 28 mars 2011
S’applique à : SharePoint Foundation 2010
Dans cet article
Classe qui représente le site Web
Propriétés qui représentent les listes
Classes qui représentent les types de contenu
Propriétés qui représentent les colonnes de liste
Énumérations et classes qui représentent les options dans le cas d’un champ Choix ou Choix multiples
Champs EntityRef<T>, EntitySet<T>, et LookupList<T> qui représentent des relations de liste de recherche
Cette rubrique présente les règles suivies par défaut par SPMetal lorsqu’il génère du code. Vous pouvez en partie modifier ce comportement en créant un fichier de paramètres SPMetal et en ajoutant une option /parameters à la ligne de commande SPMetal. Pour plus d’informations sur ce type de personnalisation, voir Remplacement des valeurs SPMetal par défaut par un fichier XML de paramètres et SPMetal.
Dans les sections suivantes, les règles indiquées par un astérisque ne peuvent pas être remplacées.
Celles qui peuvent l’être sont suivies d’une indication du balisage XML qui les remplace.
Classe qui représente le site Web
*Une classe qui hérite de la classe DataContext est générée pour représenter les données de site Web dans leur ensemble.
La classe est marquée partial (Partial en Microsoft Visual Basic).
La classe est marquée public (Public en Visual Basic). (Remplacée avec l’attribut AccessModifier de l’élément <Web>.)
La classe est nommée FileNameDataContext, FileName correspondant au nom du fichier (sans l’extension de nom de fichier) spécifié par l’option /code sur la ligne de commande SPMetal. Par exemple, si « /code:Personnel.vb » se trouve sur la ligne de commande, la classe est nommée PersonnelDataContext. (Remplacée avec l’attribut Class de l’élément <Web>.)
Propriétés qui représentent les listes
Une propriété est générée (dans la classe dérivée de DataContext) pour chaque liste non masquée du site Web. (Remplacée avec les éléments <ExcludeList> ou <ExcludeOtherLists>.)
*Le type de la propriété est EntityList<TEntity>.
La propriété est marquée public (Public en Visual Basic).
Aucune propriété n’est générée pour les listes masquées. (Remplacée avec un élément <IncludeHiddenLists> ou un élément <List> dont l’attribut Name est affecté à une liste masquée.)
Une propriété qui représente une liste a le même nom que la liste, avec les exceptions suivantes.
Si le nom de la liste contient des espaces, ils sont supprimés du nom de la propriété.
Si la première lettre du nom de la liste est une minuscule, elle est mise en majuscule dans le nom de la propriété.
Nom de la liste
Nom de la propriété
Announcements
Announcements
Team Members
TeamMembers
lentils
Lentils
(Remplacée avec l’attribut Member de l’élément <List>.)
(TEntity), le paramètre de type de la propriété EntityList<TEntity>, est la classe de type de contenu qui est générée pour la liste. Voir Classes qui représentent les types de contenu plus loin dans cette rubrique. En règle générale, si plusieurs types de contenu sont associés à la liste, TEntity est un type de contenu à dénominateur commun. Souvent, la classe à dénominateur commun correspond simplement au type de contenu Item de base de Microsoft SharePoint Foundation. (Remplacée avec l’attribut Type de l’élément <List>.)
Important
Il existe une exception à la règle habituelle selon laquelle un type de contenu à dénominateur commun est utilisé chaque fois que la liste possède plus d’un type de contenu. SharePoint Foundation ajoute un type de contenu Folder de base à toutes les listes (en plus du type de contenu Item de base). Toutefois, par défaut, SPMetal ne compte pas le type de contenu Folder au moment de déterminer si la liste contient plusieurs types de contenu. De ce fait, si le type de contenu Folder est le seul type de contenu supplémentaire, le type TEntity de la propriété EntityList<TEntity> est le type de contenu spécifique complet de la liste, tel que Announcement pour la liste Announcements et CalendarEvent pour la liste Calendar. Vous pouvez substituer ce comportement par défaut.
Classes qui représentent les types de contenu
Une classe de type de contenu est générée pour représenter le type de contenu SharePoint Foundation Item de base. (Remplacée par un élément <ExcludeContentType> pour le type de contenu et pour chaque classe de type de contenu qui en hérite.)
Pour toute liste (qui n’a pas été exclue de la génération de code), une classe de type de contenu est générée pour chaque type de contenu défini affecté à la liste. (Remplacée par les éléments <ExcludeContentType> ou <ExcludeOtherContentTypes>.)
Pour tout type de contenu défini, y compris le type de contenu Item de base, la classe générée a le même nom que le type de contenu. (Remplacée avec l’attribut Class d’un élément <ContentType>.)
*Pour toute liste qui n’utilise pas de type de contenu défini (et qui n’a pas été exclue de la génération de code), mais à laquelle une ou plusieurs colonnes ont été ajoutées, une classe est générée pour représenter le type de contenu implicite.
La classe qui représente un type de contenu implicite est nommée ProcessedListNameBaseContentType, ProcessedListName correspondant au nom généré pour la propriété qui représente la liste (voir Propriétés qui représentent les listes plus haut dans cette rubrique) et BaseContentType étant le nom du type de contenu défini dont est dérivé le type de contenu implicite. Il s’agit généralement du type « Item », mais dans certains cas, il s’agira du nom d’un autre type de contenu défini. Par exemple, si le type de contenu défini Issue est ajouté à une liste appelée Tasks et si une colonne de ce type de contenu est supprimée de la liste, la classe qui représente ce nouveau type de contenu implicite est appelée TasksIssue (Remplacée avec l’attribut Class d’un élément <ContentType>.)
Important
Le type de contenu implicite n’étant pas encore nommé au moment où le fichier parameter.xml est lu, vous ne pouvez pas utiliser « ProcessedListNameBaseContentType » comme valeur d’attribut d’un élément contenu dans le fichier parameters.xml. Par exemple, vous ne pouvez pas obtenir de SPMetal qu’il définisse la propriété EntityList<TEntity><T> qui représente une liste de membres d’équipe sous la forme EntityList<TeamMembersItem>, où TeamMembersList correspond au type de contenu implicite de la liste, en créant un élément <List> pour la liste et en affectant à son paramètre Type la valeur « TeamMembersItem ». Cela provoquerait une erreur de SPMetal, car il n’a pas encore généré le nom « TeamMembersItem » au moment où il lit le fichier parameters.xml. Si vous devez traiter les membres d’une liste en tant qu’objets du type implicite, vous pouvez utiliser la méthode Cast<TResult>(IQueryable) dans l’appel à GetList<T>(String) et obtenir en retour un type anonyme. Par exemple, var teamMembers = teamWebSite.GetList<Item>("TeamMembers").Cast<TeamMembersItem>();.
*Si un type de contenu hérite d’un autre type de contenu, la classe générée qui représente le premier hérite de la classe qui représente le dernier.
*Les classes de type de contenu sont marquées partial (Partial en Visual Basic).
Les classes de type de contenu sont marquées public (Public en Visual Basic). (Remplacées avec l’attribut AccessModifier d’un élément <ContentType>.)
Aucune classe n’est générée pour les types de contenu masqués. (Remplacée avec un élément <IncludeHiddenContentTypes> ou un élément <ContentType> dont l’attribut Name est affecté à un type de contenu masqué.)
*La classe qui représente le type de contenu Item de base implémente ITrackEntityState, ITrackOriginalValues, INotifyPropertyChanged et INotifyPropertyChanging.
Propriétés qui représentent les colonnes de liste
Une propriété est générée (dans une classe de type de contenu) pour chaque champ (colonne) non masqué dans le type de contenu. (Remplacée avec les éléments <ExcludeColumn> ou <ExcludeOtherColumns>.)
La propriété est marquée public (Public en Visual Basic).
La propriété porte le même nom que la colonne qu’elle représente. (Remplacée avec l’attribut Member d’un élément <Column>.)
*Les espaces contenus dans un nom de colonne sont supprimés.
*Si le premier mot du nom de colonne est en minuscules, il est mis en majuscules dans le nom de la propriété.
Le type d’une propriété de colonne est déterminé en fonction de la propriété du champ, conformément au mappage présenté dans l’article Mappage des types : depuis le fournisseur LINQ to SharePoint vers .NET. (Remplacé avec l’attribut Type d’un élément <Column>.)
Aucune propriété n’est générée pour les colonnes qui se trouvent dans la liste, mais pas dans le type de contenu. (Remplacée avec l’attribut Name d’un élément <Column>.)
Aucune propriété n’est générée pour les colonnes masquées, à l’exception des colonnes masquées « Id » et « Version ». (Remplacée avec l’élément <IncludeHiddenColumns>.)
Énumérations et classes qui représentent les options dans le cas d’un champ Choix ou Choix multiples
Pour chaque champ Choix qui n’autorise pas la saisie manuelle, une classe énumérée est générée. (Remplacée avec l’attribut Type d’un élément <Column>.)
Pour chaque champ Choix multiples qui n’autorise pas la saisie manuelle et qui propose moins de 31 choix, une classe énumérée décorée avec l’attribut [Flags] est générée. (Remplacée avec l’attribut Type d’un élément <Column>.)
*« Non valide » et « Aucun » sont ajoutés aux énumérations comme valeurs possibles dans les deux cas.
*Pour chaque champ Choix ou Choix multiples qui n’autorise pas la saisie manuelle, une classe sealed est générée avec une constante String pour chaque valeur définie.
Champs EntityRef<T>, EntitySet<T>, et LookupList<T> qui représentent des relations de liste de recherche
*Pour chaque colonne qui correspond à une recherche dans un champ d’une autre liste et qui n’autorise pas les valeurs multiples, la propriété qui représente la colonne englobe un champ privé de type EntityRef<TEntity>, TEntity étant le type de contenu de la liste de recherche.
*Pour chaque colonne qui correspond à une recherche dans un champ d’une autre liste, qui autorise les valeurs multiples et qui recherche dans une liste représentée par du code généré par SPMetal, la propriété qui représente la colonne englobe un champ privé de type EntitySet<TEntity>, TEntity étant le type de contenu de la liste de recherche.
* Pour chaque colonne qui correspond à une recherche dans un champ d’une autre liste, qui autorise les valeurs multiples et qui recherche dans une liste qui n’est pas représentée par du code généré par SPMetal (p.ex., une liste cible masquée ou exclue de la génération de code par le fichier de configuration de SPMetal), deux champs privés LookupList<T> sont générés. L’un des deux contient les valeurs actuelles du champ de recherche (qui est un sous-ensemble de la colonne cible), tandis que l’autre contient les ID des éléments de la liste d’où sont extraites les valeurs actuelles. Ces deux champs privés sont tous deux englobés par une propriété publique de type IList<T>.
Voir aussi
Référence
Microsoft.SharePoint.Linq.CodeGeneration
Concepts
Mappage des types : depuis le fournisseur LINQ to SharePoint vers .NET
Remplacement des valeurs SPMetal par défaut par un fichier XML de paramètres