2010-10-26 5 views
4

Quelles sont les limitations les plus importantes de ADO.NET Entity Framework 4.0 que les développeurs d'applications métier doivent connaître? Je l'ai utilisé dans certains projets pour animaux de compagnie et il semble très efficace, mais je suis préoccupé par les problèmes auxquels je serai confronté lorsque je construis de grandes applications métier plus complexes basées sur les données. Je suis particulièrement intéressé par la façon dont le choix d'utiliser Entity Framework pour accéder à mes données pourrait limiter les différents modèles/architectures de conception que je pourrais utiliser lors de la construction de mon projet. Parce que je pense utiliser le framework d'entité dans les futurs projets, je ne m'intéresse qu'aux limitations de la version actuelle de Entity Framework.Limites les plus importantes du framework Entity

Répondre

3

Vous devez être conscient du bavardage de base de données. Persister un graphique d'objet entier n'est pas vraiment une bonne idée. Lorsque vous effectuez une requête et une mise à jour complexes, EF essaie toujours de mettre à jour les objets insérés. La solution à cela est d'avoir une requête complexe et une logique de mise à jour dans un proc stocké et en passant des graphes d'objet dans via XML/string, etc pour un seul appel DB.

Un autre problème avec EF lors de la première conception ou de la première modélisation DB est que les classes d'entités elles-mêmes sont couplées au framework via l'héritage. Il y a plusieurs stratégies autour de ça, j'ai un post de blog qui permet d'utiliser POCO tout en extrayant une interface en même temps pour se moquer, ce qui est vraiment pratique.

Getting the entity framework to Generate an interface for Mocking

+0

joli article de blog - cependant, savez-vous qu'il existe un modèle T4 qui génère automatiquement un faux ctx pour vous (la même chose que votre blog) – RPM1984

+0

Nice one. Vous avez un lien? – Slappy

+0

http://visualstudiogallery.msdn.microsoft.com/fr-fr/a850e686-df08-4245-b0bb-5872654285c9 C'est génial. Je l'ai utilisé pour simuler l'OC/DC, puis injecter les fakies dans mes repo en mémoire en utilisant DI. Agréable. – RPM1984

2

Cela devrait probablement un CWiki, mais je vais rouler avec les coups de poing. La clé d'une bonne implémentation EF est un mélange intelligent de modélisation de domaine correcte (TPT pour la flexibilité, TPH pour la performance, l'héritage), abstraction de la logique de persistance (modèle de référentiel, POCO, injection de dépendances) et savoir quand utiliser procédures stockées pour les tâches exigeant beaucoup de base de données.

Si vous voulez entrer dans le nitty-gritty, les seules limitations que j'ai trouvé avec EF est le manque de support de mappage enum (cela devrait être corrigé bientôt si).

IMO, la limitation n'est pas vraiment dans le produit, c'est dans le manque de respect des principes directeurs et des directives architecturales communes du développeur.

+0

Non, les limites sont généralement dans le produit - les directives de conception et les principes sont presque toujours une solution pour les limitations dans le langage/cadre. Il y aura * toujours * un besoin de lignes directrices/principes, comme il y a * toujours * des limites - mais cela ne signifie pas que les limitations sont inexistantes. –