Passons maintenant au type de champ taxonomique. Leur génération n’est pas non plus prise en compte par le SPMetal et demande une petite réflexion supplémentaire contrairement au type image par exemple.
En effet, les champs de ce type peuvent être multi-values. Leur résolution est donc différente.
La dessus, même en forçant la génération de la colonne dans le fichier XML pour paramétrer SPMetal, ça ne vous aidera pas.
Il faut donc utiliser l’assembly : Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue pour les champs taxonomiques simple et Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection pour les multi-values qui n’est autre qu’une List<TaxonomyFieldValue>.
Ces classes permettent de récupérer le label, donc le texte, le “termGuid” pour le Guid du term, la “validatedString” qui est une représentation dite sérialisée de l’objet taxonomique ainsi que le WssId nécessaire pour le lookup de champs, pour plus d’information: ici.
Ainsi si le champ est simple :
[Microsoft.SharePoint.Linq.ColumnAttribute(Name="col_Keyword", Storage="_keyword", FieldType="Taxonomy")] public TaxonomyFieldValue Keyword { get { return this._keyword; } set { if ((value != this._keyword)) { this.OnPropertyChanging("Keyword ", this._keyword); this._keyword= value; this.OnPropertyChanged("Keyword"); } } }
Pour les multi-values:
[Microsoft.SharePoint.Linq.ColumnAttribute(Name="col_Keywords", Storage="_keywords", FieldType="Taxonomy")] public TaxonomyFieldValueCollection Keywords{ get { return this._keywords; } set { if ((value != this._keywords)) { this.OnPropertyChanging("Keywords", this._keywords); this._keywords= value; this.OnPropertyChanged("Keywords"); } } }
Bien sûr, avec ce type de classe, ne pas oublier de faire une petite boucle pour afficher vos labels avec un “;” entre chaque TaxonomyFieldValue par exemple.
Et voilà, encore un type de champ complété.