Partager via


Entités partagées

Les entités peuvent être partagées entre plusieurs services de domaine au sein d'une application Services RIA WCF. Le même type d'entité est accessible par un client par le biais de chacun de ces services de domaine, à la condition qu'ils soient contenus dans la même DLL de serveur. La prise en charge des entités partagées inclut la génération de code en fonction de différentes associations potentielles et de méthodes de mise à jour personnalisées dans chacun des types DomainService. La possibilité de partager des entités améliore la refactorisation et la composition d'applications Services RIA plus volumineuses via un mappage plus simple des entités avec le modèle de données sous-jacent.

Les scénarios qui illustrent la nécessité d'un tel partage sont courants. Intéressons-nous, par exemple, à la manière dont les informations personnelles sur les employés et les données de ces mêmes employés gérées par les ressources humaines peuvent être partagées. Une entité Employé peut être exposée via un DomainService Informations personnelles sur les employés, où les employés ont la possibilité de mettre à jour leurs informations personnelles, telles que leur adresse et leur numéro de téléphone. Le même type Employé peut également être exposé via un DomainService Ressources humaines, où entre autres informations des ressources humaines, telles que les dates de congés et les charges salariales, l'affichage montre également les détails de l'entité Employé, tels que le nom et l'ID. Autre exemple : une entité produit est utilisée à la fois par le service Achats et un service de catalogue.

Notez que le partage d'entités n'est pris en charge que dans une DLL de serveur unique. Le même type d'entité peut être référencé par un nombre illimité de services de domaine dans la limite DLL. Toutefois, le partage du même type d'entité entre plusieurs DLL de serveur n'est pas pris en charge. Pour savoir comment partager une entité entre plusieurs domaines de service, consultez la rubrique Procédure pas à pas : Partage d'entités entre plusieurs services de domaine.

Important Remarque :
La prise en charge d'entités partagées date de Services RIA WCF V1.0 SP1 et n'est pas reconnue dans Services RIA WCF V1.0.

Mise en forme de l'entité du client

Depuis l'introduction du partage des types d'entité entre plusieurs services de domaine, chaque DomainService qui utilise un type d'entité donné contribue à la génération ou non d'une propriété d'entité de serveur sur le client. L'entité du client générée est un affichage fusionné contenant des propriétés d'entité utilisées par les services exposant le type. En conséquence, le générateur de code crée un type d'entité sur le client qui peut accéder à chacun des services de domaine dans la DLL d'application. La forme de l'entité du client peut également être affectée par l'utilisation des attributs IncludeAttribute et ExcludeAttribute. La propriété d'entité de serveur portant le IncludeAttribute se reflète toujours sur le client. La propriété d'entité de serveur portant le ExcludeAttribute ne se reflète jamais sur le client.

Méthodes de mise à jour personnalisées avec des entités partagées

Les méthodes de mise à jour personnalisées d'un service de domaine dont l'attribut [Update(UsingCustomMethod = true)] leur est appliqué se reflètent dans le contexte du domaine client, et l'entité du client contient les méthodes de mise à jour personnalisées qui y sont associées. Le contexte de domaine présente une affinité naturelle avec le service de domaine, mais étant donné que l'entité ne peut pas être partagée, les utilisateurs doivent savoir le contexte de domaine à utiliser lors de l'appel d'une méthode de mise à jour personnalisée. Intellisense propose une assistance à ce sujet.

Limitations du partage

Il convient de tenir compte de trois limites s'appliquant aux entités partagées.

  1. Le partage du même type d'entité entre plusieurs DLL de serveur, n'est toujours pas pris en charge, comme mentionné précédemment.

  2. Dans une hiérarchie d'héritage, si des branches d'une hiérarchie font l'objet d'un partage, le même niveau de la hiérarchie doit être partagé.

  3. Tous les objets DomainService qui partagent un type d'entité particulier doivent être d'accord sur la description des métadonnées de ce type. Cela signifie que tout objet DomainServiceDescriptionProvider personnalisé du service doit spécifier les mêmes métadonnées pour ce type.