Question

j'ai l'impression que

  • EF avec POCO: vous permet de mapper vos propres POCO aux entités du modèle (.edmx).
  • EF Code-Only: non edmx / modélisateur (c'est-à-dire métadonnées CSDL / SSDL / MSL (collectivement EDMX)). Les POCO restent, mais les mappages, les relations, la navigation, etc. sont tous manuellement codés (d'où la description en code uniquement).

Si cette description des deux concepts est (plus ou moins) correcte, pourquoi quelqu'un ferait-il quoi faire d'un code uniquement au lieu d'un EF avec POCO?

Les deux font des POCO, mais le second a le fardeau supplémentaire de devoir aussi faire la cartographie, manuellement?

Était-ce utile?

La solution

  1. Seul le code est génial si vous voulez écrire le mappage à la main sans avoir à passer par XML. De plus, le concepteur edmx devient difficile à manier après une cinquantaine de modèles. C’est un fardeau d’utiliser cette méthode.

Quand quelque chose ne va pas dans votre XML de mappage, c'est vraiment un PITA à explorer dans le XML pour apporter les corrections dont vous avez besoin. De plus, le concepteur casse si vous commencez à éditer manuellement votre xml dans certains scénarios.

Maintenant, je ne connais pas les détails, mais le concepteur de EF1 n'a pas pris en charge toutes les options de mappage disponibles. Le concepteur EF4 apporte quelques améliorations (des relations simples), mais je ne suis pas certain qu’il présente une parité des fonctionnalités avec les mappages manuels.

  1. Oui.

Autres conseils

La seule chose que je voudrais ajouter à la réponse de jfar est qu'avec Code-Only, vous n'avez pas pour créer des mappages.

Les mappages peuvent être déduits par convention la plupart du temps.

Le point concernant la vue de pré-génération est important. Je n'ai pas entendu dire que Microsoft ait l'intention de fournir une pré-génération pour le code uniquement. Si quelqu'un connaît différent, merci de poster.

J'ai utilisé le code uniquement pour 400 tables dans le cadre d'une enquête sur l'opportunité d'utiliser EF4 ou NHibernate et il existe un délai initial de 80 secondes pour la génération de vues - exactement comme si vous utilisiez le concepteur, mais avec le concepteur. voir la pré-génération est possible, ce qui a ramené le délai à 10 secondes. Si vous n'êtes pas content de diviser votre modèle et que vous avez plus de 75 tables, n'utilisez pas de code.

Je ne pense pas que Code-Only vous permette actuellement de prégénérer des vues. Il peut donc y avoir un coût de performances. Cela pourrait changer avant la publication, cependant.

Un autre élément qui n’a pas été mentionné est que vous obtenez une vérification complète de votre syntaxe lors de la compilation lors de l’utilisation de Code uniquement. Si vous utilisez le concepteur visuel avec EDMX, vous obtenez une vérification à la compilation, mais elle est limitée. Pour les modèles plus grands, EDMX devient extrêmement peu scrupuleux, et écrire manuellement les fichiers CSDL, SSDL et MSL est le seul moyen décent de gérer des modèles extrêmement volumineux avec des mappages XML. Vous n'obtenez aucune vérification au moment de la compilation si vous gérez manuellement vos mappages.

Avec Code uniquement, vous bénéficiez d’une vérification complète du temps de compilation pour les modèles de toute taille, même si vous avez des centaines, voire des milliers, d’entités avec lesquelles vous devez travailler. Il en résulte également moins de "fouillis", car votre produit final est constitué d'assemblages compilés, plutôt que d'un mélange d'assemblages et de divers types de fichiers xml.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top