web-dev-qa-db-fra.com

ADO.NET DbContext Generator vs ADO.NET Poco Entity Generator (ObjectContext)

Je suis sur le point de commencer à mettre en œuvre l'infrastructure d'accès aux données d'un projet qui a été conçu avec une approche DDD ( c'est ma première tentative sur DDD, alors soyez doux; -)).

J'utiliserai Entity Framework. Jusqu'à présent, je cherchais la méthode enseignée par Julie Lerman sur son grand livre, Programming Entity Framework , où ADO.NET POCO Entity Generator est utilisé, avec quelques modifications aux modèles T4 et un code plus personnalisé.
Aujourd'hui, j'ai commencé à lire des articles sur EF4.1 et le ADO.NET DbContext Generator, en utilisant Base de données d'abord approche, et j'essaie de décider avec laquelle dois-je aller.

L'approche de DbContext et EF4.1 sur DDD semble être une manière agréable et plus propre que les entités POCO, mais je crains que cela puisse entraîner des problèmes dans un proche avenir, car EF4.1 est toujours en RC.

D'après blog de l'équipe ADO.NET , je sais que EF4.1 ne comprend pas :

  • Prise en charge de l'énumération
  • Prise en charge des types de données spatiales
  • Prise en charge des procédures stockées dans Code First
  • Prise en charge de la migration dans Code First
  • Conventions personnalisables dans Code First

D'après ma compréhension, puisque j'utiliserai Base de données d'abord il y a un plus petit nombre de fonctionnalités qui n'étaient pas incluses.

En conclusion, ma question est:
Puis-je remplacer Générateur d'entités POCO avec EF4.1 DbContext Generator?

58
Nelson Reis

D'un point de vue de propre création d'entités POCO, il n'y a pas de différence entre les deux générateurs. Les deux générateurs produisent les mêmes entités, cependant, ADO.NET POCO Entity Generator est basé sur l'API de ObjectContext, tandis que ADO.NET DbContext Generator est basé sur DbContext API.

L'API de DbContext a quelques nouvelles fonctionnalités très agréables (Local, Requête sur la propriété de navigation, etc.) et l'API est en quelque sorte simplifiée mais en même temps, il semble que certaines fonctionnalités utilisées dans l'API ObjectContext manquent dans l'API DbContext (ou du moins, elle a pas encore suffisamment exploré).

EF 4.1 RC est une version en ligne. Cela signifie que vous pouvez créer une véritable application avec elle car l'API ne changera pas en RTW (seuls les bugs seront corrigés). RTW devrait également être disponible le mois prochain, donc je pense que vous ne serez pas prêt avec votre application avant que la version finale ne soit expédiée.

API ObjectContext ou DbContext? L'API ObjectContext est beaucoup mieux couverte par la documentation et les articles de blog. Vous pouvez trouver de nombreux exemples à ce sujet. Ses limites sont également déjà bien connues. L'API DbContext est une nouvelle version. Une version très prometteuse, principalement en raison de l'approche code-first. Il y a encore un nombre très limité de billets de blog, pas de livre et l'API n'est pas suffisamment éprouvée. Cela dépend donc si vous êtes prêt à vous battre avec une nouvelle API? Sinon, alors l'API ObjectContext est toujours un bon choix car vous n'avez pas besoin de l'approche code-first.

54
Ladislav Mrnka