2011-05-13 2 views
1

J'ai entendu dire qu'il y avait des inconvénients à POCO avec Entity Framework, mais je ne suis pas sûr à 100% de ce qu'ils sont. J'ai entendu dire qu'il y a des problèmes avec le suivi des changements. Quels sont les principaux inconvénients et quelles sont les solutions de contournement? Je cherche à utiliser les Entités POCO dans un projet à venir et je veux être complètement préparé.Entity Framework + POCO Downfalls?

Merci!

Répondre

4

Les chutes dépendent du type d'application que vous allez écrire. Les POCO sont excellents du point de vue de l'architecture car ils n'introduisent pas de dépendances sur le framework Entity. Les problèmes avec le suivi des modifications peuvent être divisés en deux blocs distincts:

  • entités Détaché
  • Performance

entités indépendantes situées non seulement problème de Poços. C'est un problème global dans EF et peut-être dans tout le concept ORM (mais d'autres API ont probablement de meilleurs outils pour faire face à ce problème). Le fait est que ORM est responsable des modifications persistantes apportées aux entités. Pour ce faire, il propose certains mécanismes de suivi des modifications, mais ces mécanismes de suivi des modifications ne fonctionnent que si ORM connaît l'entité. Une fois que vous détachez une entité (dans le cas d'EF appel Detach ou disposez ObjectContext ou créez une entité sans la charger depuis la base de données - commun dans les applications Web et les services Web) EF ne connaît pas les modifications et une fois que vous voulez enregistrer l'entité, vous devez le dire EF ce qui a changé. C'est easy to do in case of single entity mais c'est pretty big challenge dans le cas d'un graphe d'objet entier. Cela peut être partiellement résolu par STEs mais I don't think that STEs are good solution pour le problème - ils ne sont utiles que dans certains scénarios.

Les problèmes de performances sont également liés au suivi des modifications. Plusieurs rapports montrent que si EF souhaite suivre les modifications dans les entités, il faut très longtemps pour initialiser le suivi des modifications (lorsque entity is loaded from database ou attached to the context). Ce problème est important uniquement si vous envisagez de travailler avec des ensembles de données volumineux.

Il y a encore beaucoup de projets réussis utilisant des POCOs et la plupart des projets ne rencontreront probablement aucun de ces problèmes.

Questions connexes