Utilisation d’OData et de types de contenu externe (ECT) dans SharePoint 2013

Article d’origine publié le vendredi 7 décembre 2012

Parmi les améliorations notables apportées dans le domaine de BCS SharePoint 2013, citons le fait que SharePoint peut désormais consommer OData dans les applications BDC. Toutefois, lorsque j’ai effectué la procédure, j’ai découvert quelques problèmes dont je vais vous parler ici au cas où vous vous retrouveriez dans la même situation. Pour commencer, je vous recommande de passer en revue le document suivant : https://msdn.microsoft.com/en-us/library/sharepoint/jj163967.aspx. Celui-ci décrit la procédure de base pour créer une application pour OData. Ce qu’il faut principalement en retenir, c’est que vous NE pouvez PAS créer d’application BDC dans SharePoint Designer qui se connecte à une source OData. Pour cela, vous devez créer un type de contenu externe (ECT) à l’aide d’un outil tel que Visual Studio.

Le document que je vous ai conseillé de lire ci-dessus vous guide tout au long de la création d’un ECT. Il vous montre comment utiliser un ECT dans une application SharePoint et comment le déployer, mais il NE montre PAS ce qu’il faut faire si vous souhaitez l’ajouter au catalogue BDC pour pouvoir l’utiliser dans de nombreuses collections de sites. Mon billet vient donc combler cette lacune. La première chose à comprendre, c’est que lorsque vous suivez le processus décrit dans l’article ci-dessus, vous créez un ECT pour chaque entité (comme une table). Ceci est important, car étant donné qu’un nom partagé est utilisé dans le fichier ECT, vous ne pouvez pas télécharger plusieurs fichiers ECT dans le catalogue BDC. Pour pouvoir utiliser chacune de ces entités dans SharePoint, voici ce que vous devez faire :

  1. Cliquez avec le bouton droit sur le fichier ECT dans Visual Studio et sélectionnez Ouvrir avec, puis sélectionnez Éditeur XML (Texte). En haut du document dans l’élément Model, vous devez voir un attribut Name. Cette valeur doit être unique dans chacun des ECT que vous téléchargez vers le BDC. Vous pouvez par exemple affecter à chaque valeur une description de l’entité, comme « Table clients ».
  2. Vous pouvez aussi, mais cela n’est pas obligatoire, modifier l’espace de noms (Namespace) de l’élément Entity, qui se trouve environ 20 lignes plus bas dans le document. J’ai changé le mien pour être cohérent avec le nom du modèle, par choix personnel, mais vous n’êtes pas obligé de le faire.
  3. Une fois que vous avez apporté les modifications et enregistré le fichier, vous pouvez télécharger le fichier .ect directement vers le BDC. Utilisez simplement les options par défaut (c’est un modèle), puis cliquez sur le bouton OK. Voilà, le tour est joué !
  4. Après avoir importé les modèles, n’oubliez pas d’accorder les autorisations nécessaires pour que d’autres personnes puissent s’en servir. Sinon, cela n’a guère d’intérêt.

Une dernière chose à noter ici : avec les options par défaut, vous n’obtenez pas de points de terminaison de métadonnées sur des éléments tels que des bases de données SQL, le stockage de tables Azure, etc. Heureusement, vous pouvez les ajouter assez facilement pour SQL. En un mot, vous devez :

  1. Créer une application web ASP.NET vide
  2. Ajouter un modèle EDM (Entity Data Model) ADO.NET
  3. Ajouter un service de données WCF
  4. Dans votre service de données WCF, vous devez définir le Type dans le constructeur de classe, ce qui peut sembler un peu déroutant au début. Pour cela, recherchez un fichier (dans le dossier App_Code) dont le nom est semblable à myDataConnection.Context.tt. Lorsque vous développez ce fichier, vous devriez voir en dessous de celui-ci une classe myDataConnection.Context.cs. Si vous ouvrez cette classe, deux éléments d’information qui sont nécessaires pour votre service de données WCF doivent apparaître : 1) le nom de la classe que vous utiliserez comme Type pour le constructeur de classe du service de données WCF ; 2) les noms des entités qu’il prend en charge (implémentées comme suit : get; set; properties). Vous aurez aussi besoin des noms d’entité dans le service de données WCF, car vous devez au minimum créer « SetEntitySetAccessRules » pour chaque entité à exposer. Vous trouverez des explications détaillées dans les commentaires lorsque vous ajoutez un service de données WCF (je vous dis simplement où trouver le nom de l’entité à utiliser lorsque vous créez une de ces règles).

 

Ce billet de blog a été traduit de l’anglais. La version originale est disponible à la page Using OData and ECTs in SharePoint 2013.