Je crée une application Silverlight 4 avec les services WCF RIA. Sur le côté serveur (le projet *.Web
), j'ai un modèle d'entité qui est généré automatiquement à partir d'une base de données SQL Server. Du côté client, j'ai le service de domaine et les objets proxy générés par Visual Studio pour une utilisation dans les assemblys Silverlight.Affichage des propriétés Entity Framework côté serveur personnalisées côté client
Je souhaite ajouter des propriétés personnalisées au modèle (de préférence côté serveur). Disons que j'ai Contact
, Company
, et Address
tables, qui sont liés par des clés étrangères (mais pas nécessairement réelle clé étrangère contraintes). Je souhaite ajouter une propriété qui renverra un objet Company
de Contact
Address
.
J'ai tenté de le faire en créant une classe partielle pour étendre la classe Contact
et en ajoutant une propriété CompanyAddress { get; }
. Mais je n'ai aucune idée de ce que je dois faire avec la nouvelle propriété afin de la propager au code généré automatiquement du côté client. Y a-t-il des attributs spécifiques que je dois ajouter à la propriété? Dois-je l'enregistrer quelque part pour que le générateur de code le sache?
Est-ce que cela doit être une propriété de navigation ou peut-il être quelque chose de plus simple?
Et est-ce la meilleure façon de faire les choses, ou devrais-je abandonner l'extension du modèle côté serveur et le faire du côté client? (Si je le fais du côté client, je suis confronté au problème de ne pas avoir accès à l'objet contexte dans les classes individuelles Entity
)
Je n'ai actuellement pas la possibilité de modifier le schéma de base de données existant, donc je ne peux pas dépendre des relations de clés étrangères existant déjà dans le fichier .edmx généré. Je ne dois pas non plus modifier manuellement le fichier .edmx, car le schéma * peut * changer dans le futur, et mes modifications seront écrasées lorsque nous régénérerons le fichier edmx. – kpozin
Puis ajoutez setter à votre propriété et vérifiez si la classe d'entité générée est marquée avec l'attribut DataContract. Si oui, marquez votre propriété avec l'attribut DataMember. –
Nous vous remercions de votre aide jusqu'à présent. J'ai ajouté un setter et marqué la propriété avec [DataMember]. Cela n'a aucun effet. la propriété n'est pas ajoutée à la classe de proxy Contact dans Generated_Code \\ *. Web.g.cs – kpozin