Publié lundi 23 août 2010 08:25 par Audrey

[RIA Services] Utilisation des classes Shared pour les metadatas


Avec WCF RIA Services et les DomainServices, le fichier contenant les metadatas est généré à partir des entités choisies dans l'ADO.NET Entity Data Model. Mais si l'on souhaite y ajouter une propriété "FullAddress", par exemple, on se retrouve confronté à l'erreur suivante :

"The associated metadata type for type 'SharedInfos.Web.Customers' contains the following unknown properties or fields: FullAddress. Please make sure that the names of these members match the names of the properties on the main type."

Pour compléter ces metadatas, il existe les classes Shared. Ce fichier avec l'extension .shared.cs (ou .shared.vb) permet de déclarer la classe partielle dans laquelle on souhaite ajouter les propriétés et/ ou les méthodes. Attention le nom du namespace doit bien être celui du projet Web.

namespace SharedInfos.Web
{
  public partial class Customers
  {
     public string FullAddress
     {
       get
       {
          return Address + " " + PostalCode + " " + City;
       }
     }
  }
}


Lors de la compilation, le fichier sera répliqué à l'identique du côté client, ce qui permet de pouvoir accéder à la fois du côté serveur et du côté client aux nouvelles fonctionnalités de la classe Customers.



Et maintenant la propriété "FullAddress" de la classe Customers est accessible :



Ces fichiers sont aussi intéressant pour déclarer les méthodes qui vont permettre d'utiliser des CustomValidations dans nos metadatas par exemple (à suivre dans un prochain article Wink ).
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

# re: [RIA Services] Utilisation des classes Shared pour les metadatas @ lundi 23 août 2010 22:55

Très bien mais je dirai que ces fichiers .shared sont complètement inutiles en Silverlight 4.

Je préfère mettre le fichier Customers.cs côté serveur, puis ajouter ce même fichier côté client en faisant un 'Ajouter comme lien' / 'Add as link'. Je ne vois pas l'intérêt de "cacher le code" côté client.

kakone

# re: [RIA Services] Utilisation des classes Shared pour les metadatas @ mardi 24 août 2010 07:22

Effectivement c'est aussi une manière de faire. L'avantage du .shared c'est qu'on garde la logique de génération / réplication du code côté Client à la compilation.

Audrey

# re: [RIA Services] Utilisation des classes Shared pour les metadatas @ mercredi 25 août 2010 14:59

Coucou, la feature est sympa ! Par contre je trouve que le mot Shared est mal choisi dans la mesure où il veut dire "Static" en VB, ça peut entraîner de la confusion...

vLabz


Les 10 derniers blogs postés

- Office 365: Script PowerShell pour assigner des droits Full Control à un groupe défini par Blog Technique de Romelard Fabrice le 04-30-2017, 09:22

- SharePoint 20XX: Script PowerShell pour exporter en CSV toutes les listes d’une ferme pour auditer le contenu avant migration par Blog Technique de Romelard Fabrice le 03-28-2017, 17:53

- Les pièges de l’installation de Visual Studio 2017 par Blog de Jérémy Jeanson le 03-24-2017, 13:05

- UWP or not UWP sur Visual Studio 2015 ? par Blog de Jérémy Jeanson le 03-08-2017, 19:12

- Désinstallation de .net Core RC1 Update 1 ou SDK de Core 1 Preview 2 par Blog de Jérémy Jeanson le 03-07-2017, 19:29

- Office 365: Ajouter un utilisateur ou groupe dans la liste des Site collection Administrator d’un site SharePoint Online via PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-24-2017, 18:52

- Office 365: Comment créer une document library qui utilise les ContentTypeHub avec PowerShell et CSOM par Blog Technique de Romelard Fabrice le 02-22-2017, 17:06

- [TFS] Supprimer en masse les dépendances à SQL Enterprise ou Developer avant de procéder à une migration par Blog de Jérémy Jeanson le 02-20-2017, 20:30

- Office 365: Attention au volume utilisé par les fichiers de Thèmes de SharePoint Online par Blog Technique de Romelard Fabrice le 02-07-2017, 18:19

- [SCVMM] Supprimer une machine bloquée par Blog de Jérémy Jeanson le 01-31-2017, 21:22