Entity Framework est-il prêt pour la production? [fermé]

10

J'examine Entity Framework pour un nouveau projet que je vais entreprendre et dans le cadre de mes recherches, je demande à certains professionnels de l'industrie s'il est stable et prêt pour une mise en œuvre dans le `` monde réel ''.

En lice, c'est:

  • EF
  • NHibernate
  • DevExpress XPO

J'ai déjà beaucoup d'expérience avec XPO, mais je n'en suis pas particulièrement satisfait.

Steven Evers
la source

Réponses:

8

Oui, mais avec quelques mises en garde:

  • Il est entièrement pris en charge par Microsoft et dispose d'une communauté croissante - mais étant plus récent que son concurrent le plus proche, nHibernate, il n'a toujours pas une communauté aussi mature.

  • En plus d'avoir une communauté moins mature, il y aura des moments où une fonctionnalité est disponible avec EF4 mais à peine documentée; ou EF4 lèvera des exceptions que Google ne peut pas vous aider.

  • Il est complet lorsqu'il est utilisé comme prévu par Microsoft, mais d'après mon expérience, il peut être assez difficile de le moderniser dans un système existant. Idéalement, vous l'utiliserez dans un scénario entièrement nouveau avec une pile 100% Microsoft. Il est certainement assez flexible pour se mélanger avec d'autres systèmes, mais cela augmente considérablement la difficulté.

Cependant, pour réitérer le point principal, il est suffisamment complet et stable pour une utilisation en production.


Une chose clé à souligner, qui semble évidente mais qui est souvent négligée jusqu'à ce qu'elle cause de la douleur, est qu'un ORM fonctionne pour passer du paradigme relationnel au paradigme OO. Si l'un de ces niveaux ne suit pas les règles de son paradigme respectif, vous vous sentirez encore plus blessé.

Cela peut aller dans les deux sens - si vous êtes bien familiarisé avec le paradigme relationnel / basé sur les ensembles de SQL et OOP, l'ORM laissera les deux s'entremêler comme du beurre. Si votre base de données semble vouloir être OO et que votre code OO semble être basé sur des enregistrements, alors YMMV.

STW
la source
+1: Merci pour l'info. Heureusement, le projet est entièrement nouveau presque entièrement dans la pile .NET (toujours en discussion entre mysql et le serveur sql), et je vais d'abord modéliser le domaine (et, espérons-le, générer la structure de la table)
Steven Evers
@SnOrfus: FWIW J'ai récemment commencé à utiliser EF par-dessus MySQL, et j'aime vraiment ça.
Eric King
5

Nous utilisons EF dans plusieurs applications de production. Nous avons également NHibernate dans plusieurs applications de production. Le commentaire de STW selon lequel EF fonctionne mieux "lorsqu'il est utilisé comme Microsoft le souhaite" est certainement vrai. Il est également vrai de NHibernate qu'il fonctionne mieux lorsqu'il est utilisé en suivant les modèles que l'équipe NHibernate voulait. Je n'ai aucune connaissance ou expérience avec XPO.

Je ne regrette pas d'avoir mis NHibernate en production.
Je ne regrette pas d'avoir mis Entity Framework en production.

L'intégration avec LINQ a été l'un des facteurs déterminants pour utiliser EF. Je sais que NHibernate a également fait beaucoup de travail avec LINQ mais n'a pas encore eu le temps d'enquêter sur cela.

Jim Reineri
la source
Travailler avec les deux est un excellent moyen d'apprendre comment travailler avec les deux. C'est un peu comme apprendre à la fois VB.NET et C # - vous posez des questions lorsque vous voyez des différences, et poser ces questions améliore considérablement votre compréhension à la fin.
STW
3

Nous utilisons EF4.1 avec l'approche Code First pour notre projet Web et, comme indiqué précédemment, en conservant l'utilisation telle que Microsoft l'a voulue, cela vous évitera de nombreux problèmes.

On peut cependant remarquer que le système n'est pas encore vraiment mature et je le dis car:

  1. Le comportement change encore beaucoup (comparé de CTP5 à 4.1)
  2. Le générateur LINQ to Entities ne peut gérer que les types de base (Int, String, the lot)
  3. Certaines choses ne fonctionnaient pas de manière entièrement intuitive lorsque vous essayez de fusionner dans des ensembles de données existants
    1. Il ne vous permet pas de créer uniquement des définitions de table pour certains dbsets
    2. La cartographie de champs tels que les heures de données nécessite une recherche sur Google.
  4. Voir les autres problèmes connus
Alessandro Vermeulen
la source
2

Je n'ai pas réellement utilisé la pile complète, mais nous l'utilisons au coup par coup dans notre produit et cela semble assez mature, même si nous avons dû adapter certaines pièces à nos besoins.

matiash
la source
0

Je pense que oui. J'utilise EF4 code-first (CTP) pour développer une application Web multi-locataire.

Jakub Konecki
la source
+1 - Oui, j'ai fait du coaching dans une équipe qui l'a utilisé intensivement dans un très grand projet d'entreprise, et cela a plutôt bien fonctionné. C'était avec la première version, pas la dernière. Je suis donc sûr qu'il est 100% sûr d'utiliser la dernière version.
Je ne sais pas comment vous pouvez être sûr à 100% de tout logiciel que vous n'avez pas réellement exécuté dans un environnement de production.
Jeremy
-1

Je pense / j'espère bien ... Je commence un projet avec EF 4 et la nouvelle approche Model-First ...

Pour ce que j'ai vu, EF 4 est beaucoup plus robuste et dispose de fonctionnalités complètes que la première version ... Je dirais allez-y, je sais que j'y vais :)

sebagomez
la source
-1

Oui, mais vous devez allouer des ressources pour mettre à jour et retester votre application lorsque des mises à jour sont publiées (comme avec tout autre framework).

casper
la source