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: Comment exporter tous les comptes Azure Active Directory ayant une license via PowerShell par Blog Technique de Romelard Fabrice le 05-17-2018, 13:46

- PowerShell: Comment avoir le Country Name depuis un Country Code par Blog Technique de Romelard Fabrice le 05-17-2018, 13:20

- Office 365: Comment supprimer un compte externe d’un site SharePoint Online en mode Extranet par Blog Technique de Romelard Fabrice le 05-11-2018, 17:00

- Office 365: Comment reconfigurer le lien “Bloc-notes” d’un teamsite par Blog Technique de Romelard Fabrice le 05-09-2018, 16:45

- Office 365: Utiliser l’option “Alert Me” de la page de résultat de recherche par Blog Technique de Romelard Fabrice le 05-09-2018, 14:57

- Office 365: Comment télécharger l’image de profil de Delve par Blog Technique de Romelard Fabrice le 05-09-2018, 14:28

- Office 365: Valeur “Country or Region” et “User Location” dans Azure AD par Blog Technique de Romelard Fabrice le 05-04-2018, 12:08

- Office 365: Menu d’administration non visible dans une page SharePoint par Blog Technique de Romelard Fabrice le 05-04-2018, 11:50

- Office 365: Comment avoir un minimum de statistiques d’usage de votre site SharePoint Online par Blog Technique de Romelard Fabrice le 05-04-2018, 11:41

- Office 365: Reconfigure la gestion des demande d’accès dans SharePoint par Blog Technique de Romelard Fabrice le 05-04-2018, 10:41