[SharePoint 2010] Repérer les limites de la génération SPMetal

Vous utilisez la génération SPMetal pour faire du Linq to SharePoint, afin de récupérer facilement le CRUD de n’importe qu’elle type de contenu (content type) ou liste de votre collection de sites SharePoint.

C’est un gain de temps considérable, très facile à mettre en place pour générer les entités.

Cependant, vous vous rendrez très vite compte qu’en cas d’utilisation plus avancées, qu’il y a certaines limites à l’utilisation de cette méthode.

En effet,  si vous avez des colonnes avec des images, des métadonnées ou encore des champs html, ils seront complètement absents de votre fichier généré.

Le but de cet article est de vous montrer comment repérer les colonnes qui ne passeront pas lors de la génération.

Il y a certaines commandes SPMetal que nous pouvons spécifier dans un fichier XML, c’est ce fichier qui permet d’interagir sur la création des classes. Une de ses particularités est de pouvoir spécifier une “Column element”, c’est à dire de pouvoir forcer la génération d’une colonne de liste ou de type de contenu même si elles seraient invisibles lors d’une génération normale. La génération est telle que si certaines colonnes ne sont pas prises en compte, la génération les supprimes directement du fichier.

Voici un exemple pour forcer une colonne de type ImageFieldValue, qui n’est pas pris en compte lors d’une génération classique.

<?xml version="1.0" encoding="utf-8"?>
<
Web xmlns
="http://schemas.microsoft.com/SharePoint/2010/spmetal"&gt;
<
ContentType Name
="Contact">
<
Column Name
="col_Thumbnail" />
</ContentType></Web
>

Et le résultat ainsi obtenu :

[Microsoft.SharePoint.Linq.ColumnAttribute(Name="col_Thumbnail", Storage="_thumbnail", FieldType="Invalid")] 
public virtual object Thumbnail { 
   get { 
      return this._thumbnail; 
   }
   set { 
      if ((value != this._thumbnail)) { 
            this.OnPropertyChanging("Thumbnail", this._thumbnail); 
            this._thumbnail = value; 
            this.OnPropertyChanged("Thumbnail"); 
      }
   }
}

Vous pouvez ainsi voir que le type n’est pas pris en compte.

Il vous suffira alors de changer les différents paramètres, le “FieldType”, le type de retour “object” afin de rendre la colonne fonctionnelle pour votre propre utilisation.

Nous verrons d’ailleurs par la suite, les différentes manières pour corriger ces limites de SPMetal pour chaque type de champ Sourire

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

%d blogueurs aiment cette page :