2009-07-20 6 views
5

Nous avons utilisé Entity Framework sur 2 projets avec plusieurs centaines de tables.Quels problèmes avez-vous rencontré avec Entity Framework?

Notre expérience est principalement positive. Nous avons eu des gains de productivité importants, à comparer avec l'utilisation de la bibliothèque d'entreprise et des procédures stockées. Cependant, lorsque je suggère d'utiliser EF sur stackoverflow, j'obtiens souvent des commentaires négatifs. Du côté négatif, nous avons constaté qu'il y a une courbe d'apprentissage abrupte pour certaines fonctionnalités. Enfin, à la question: Quels problèmes les gens ont-ils eu avec EF, pourquoi préfèrent-ils d'autres ORMS?

+0

Bonne question; il serait utile que les gens notent la version de EF qu'ils ont utilisée dans leurs réponses (v1 ou v4 beta). Merci! – TrueWill

Répondre

4

Comme vous, mon expérience avec l'EF est principalement positive. Le plus gros problème que j'ai eu est que les requêtes très complexes peuvent prendre beaucoup de temps à compiler. Le concepteur visuel est également beaucoup moins stable et possède moins de fonctionnalités que le framework lui-même. Je souhaite que le cadre mettrait l'attribut GeneratedCode sur le code qu'il génère.

+0

Vous pouvez précompiler des requêtes complexes. Jetez un coup d'oeil à CompiledQuery. –

+0

Oui, je sais. Cela vaut vraiment la peine si vous avez besoin de réutiliser une requête, mais pas plus rapidement si vous n'utilisez la requête qu'une seule fois. –

4

J'ai récemment utilisé EF et je l'ai relativement bien utilisé. Moi aussi, je vois beaucoup de commentaires négatifs sur EF, ce qui est dommage à mon avis compte tenu de tout ce qu'il offre. Un problème qui m'a surpris était la différence de performance entre deux stratégies de récupération de données. Au départ, je me suis dit que le chargement hâtif serait plus efficace car il permettrait d'extraire les données via une seule requête. Dans ce cas, les données étaient un ordre et je faisais une charge ardente sur 5-8 tables liées. Au cours du développement, nous avons trouvé que cette requête était excessivement lente. En utilisant le profileur SQL, nous avons regardé le trafic et analysé les requêtes résultantes. L'instruction SQL générée était énorme et SQL Server ne semblait pas aimer autant. Pour contourner le problème, je suis revenu à un mode de chargement paresseux/à la demande, ce qui a entraîné plus de requêtes sur le serveur, mais une amélioration significative des performances. Ce n'était pas ce que je m'attendais initialement. Mon take-away, ce qui est vrai à mon humble avis pour toutes les implémentations d'accès aux données, c'est que j'ai vraiment besoin de tester l'accès aux données. Cela est vrai indépendamment du fait que j'utiliser un ORM ou SQL ou SQL procs paramétrées, etc.

1

J'utilise Entity Framework aussi et nous avons trouvé les inconvénients suivants:

  1. Je ne peux pas travailler avec Oracle est vraiment nécessaire pour moi.
  2. Concepteur de modèle pour Entity Framework. Pendant le modèle de mise à jour à partir de la partie de stockage de la base de données est également régénéré. C'est très inconfortable.
+1

Bonjour. Avez-vous déjà essayé l'outil Entity Developer (http://www.devart.com/entitydeveloper/) et le fournisseur de données Devart dotConnect for Oracle (http://www.devart.com/dotconnect/oracle/)? Provider for vous permet de vous connecter aux serveurs Oracle. Le deuxième problème est décidé en utilisant la fonctionnalité de synchronisation de mappage d'Entity Developer lors de la création du modèle. Cette option vous aide à modifier uniquement les objets de base de données avec des instructions ALTER. Votre mappage personnalisé sera enregistré dans ce cas. – JackD

0

Ne prend pas en charge les déclencheurs dans Entity Framework.