Je suis nouveau à EF, alors veuillez m'excuser s'il s'agit d'une question noob. P>
Fondamentalement, nous avons un modèle EF configuré à l'aide du modèle d'abord pour notre projet «Plateforme» et est partagé sur de nombreuses applications que nous construisons sur cette plate-forme. Dans certaines de ces applications, nous souhaitons étendre les classes pour inclure des propriétés supplémentaires sans changer le modèle de la plate-forme. Est-ce possible avec EF 4 et comment puis-je le faire sans modifier le fichier .edmx? P>
Je remarque que les classes générées sont toutes partielles, donc potentiellement, je pourrais créer une nouvelle classe partielle avec le même nom pour inclure les nouvelles propriétés, mais y a-t-il des mappages qui doivent être pris en charge? P>
P.s. Dans des circonstances normales, j'aurais préféré utiliser l'héritage et créer une nouvelle classe pour contenir les nouvelles propriétés à la place mais à nouveau, je ne sais pas comment faire cela avec EF .. Toute illumination ici sera très appréciée! P>
Merci beaucoup, P>
3 Réponses :
ef génère des classes partielles. Donc, pour étendre la myentimentale, créez un fichier myentiTy.Cs avec édition: dans la même espace de noms que vos entités générées p> p>
Mais je ne peux pas créer de classe partielle dans un projet séparé, aucun moyen de l'entourer?
Vous pouvez modifier le modèle pour dériver de votre classe de classe, quelle classe peut être dans un autre projet, mais la classe de base doit dériver de l'entitéObject.
Quelle est l'extension? Il peut être prudent d'utiliser l'héritage si vous avez besoin d'une extension locale pour l'interface utilisateur ou similaire (ou une carte dans une vue de vue). Si vous avez besoin d'une extension de l'application de l'application, alors pourquoi utiliseriez-vous un projet séparé?
Vous ne pouvez pas utiliser l'héritage, car une fois que l'entité est chargée à partir de la source de données, EF ne saura pas sur l'héritage et à cause de celui-ci instancera le type de base sans vos propriétés au lieu de type dérivé avec vos propriétés. Toute héritage doit être mappée dans EDMX si EF doit travailler avec elle. P>
L'utilisation de la classe partielle résoudra votre problème mais: p>
Merci, ce qui a beaucoup répondu à tout ce que je voulais savoir
"Doit être défini dans la même assemblée" m'a aidé. J'aimerais vraiment étendre l'entité basée sur le domaine qu'il est inclus dans .. sans utiliser quelque chose comme Compapper pour la liaison entre les couches.
Je suis d'accord avec l'ajout de propriétés supplémentaires à la classe partielle de vos entités (comme vous et KAIDO a dit). P>
De cette façon, vous pouvez ajouter librement les propriétés souhaitées, sans modifier les classes générées et si vous génèverez votre modèle à nouveau (ou à la mise à jour à partir de dB), votre classe partielle n'est pas modifiée. P>
À mon avis, l'ajout de propriétés aux classes partielles d'entités générées est la voie à suivre. P>