ce qui est la meilleure façon est d'utiliser un ORM comme Nhibertate ou Entity Framework ou faire un ORM client. Je vais utiliser cette ORM pour C# 4.0 projetmeilleur ORM à utiliser avec C# 4.0
Répondre
MISE À JOUR 2016
Six ans plus tard, les choses sont très différentes. NHibernate est presque abandonné, d'autres alternatives ont été abandonnées (par exemple Subsonic), Entity Framework est peut-être l'ORM complet le plus courant, et les gens se tournent vers les micro ORM comme Dapper depuis des années, pour mapper des requêtes aux objets avec un minimum de aérien.
Les scénarios d'application ont également changé. Au lieu de charger et de mettre en cache un grand graphe d'objet au détriment de la mémoire et des performances, les services Web et les API REST doivent traiter un grand nombre de demandes plus petites. Cela signifie qu'un surdébit ORM complet n'est plus acceptable.
Cela signifie que les modèles et techniques comme Active Record, transaction par demande etc sont devenus le débit et l'évolutivité tuant anti-modèles
L'une des caractéristiques les plus importantes est de nos jours l'exécution asynchrone, pour réduire le fil et les déchets de CPU en raison de attend. NHibernate n'a jamais fait cette transition.
Réponse originale
Définir "meilleure": Est-ce le plus mature, celui avec plus de documentation, plus communautaire, plus grand public?
NHibernate est plus mature, riche en fonctionnalités, avec une communauté plus avancée et ne sera probablement pas interrompue lorsque MS décidera de rompre à nouveau la compatibilité. Entity Framework est plus courant et est soutenu out-of-the-box. Vous trouverez plus de livres pour débutants pour EF, des livres plus avancés pour NH.
Une bonne option serait d'essayer l'un des plus simples ORM comme Subsonic et déplacer une fois que vous comprenez comment ORM plus avancés ORM fonctionnent, quels sont les différents pièges, quels SELECT N+1
moyens [: P]
N'essayez pas de créer votre propre ORM, il y en a déjà plusieurs dizaines! Subsonic, Castle ActiveRecord, NH, EF (bien sûr), LLBLGenPro ...
Mature, riche et avancé. Ce langage est très descriptif et n'est certainement pas presque identique à la copie de la page d'accueil, ou à la copie sur chaque portail du logiciel ... merci! – Gusdor
La plupart des ORM ont leurs propres forces et faiblesses. Entity Framework, par exemple, a l'avantage (énorme?) D'être dans le framework lui-même, mais il est aussi assez lourd et un peu plus difficile à démarrer (courbe d'apprentissage plus raide).
Il y a quelques très agréable, très facile à utiliser ORM commerciaux. J'utilise actuellement Lightspeed dans un projet C# 4, et extrêmement heureux pour ce scénario spécifique.
Il vient vraiment à ce que vous avez besoin de l'ORM. Si vous voulez une configuration et une utilisation très rapides et faciles, Lightspeed, subsonic et autres sont très agréables. Si vous avez besoin de fonctionnalités complètes, alors Entity Framework et NHibernate sont de bonnes options.
Appel d'un ORM le meilleur de tous dans la perspective générale est complètement impossible. Chacun d'eux est meilleur de différentes perspectives. Vous avez choisi celui qui correspond le mieux à vos besoins. Linq2Sql a été écrit avec des performances en tête, mais il manque de support pour les autres fournisseurs, Linq2Sql est très rapide.Pourtant, il y en a d'autres qui peuvent ne pas être aussi rapides que Linq2Sql quand il s'agit de traiter avec le serveur SQL, mais ils supportent une grande variété de fournisseurs. La meilleure idée serait d'énumérer les fonctionnalités que vous souhaitez qu'un ORM ait pour votre projet et de sélectionner celui qui répond à tous vos besoins. »Vous pouvez poser ces questions pour choisir le bon ORM pour votre projet.
- Qu'est-ce que fournisseurs de bases de données vous voulez que l'ORM pour soutenir? SQL Server, MySQL, Oracle, etc.
- Avez-vous besoin de support du modèle ou db-first?
- Quel est mon critères de performance [mémoire, traitement]?
- Allez-vous l'utiliser dans web-app ou une application de bureau?
- Avez-vous clients distribués dans votre application?
- Et la liste est longue ..
J'utilise LINQ to SQL comme mon principal ORM lors de la création d'applications C#. Je vais éventuellement passer à Entity Framework, mais pour l'instant celui-ci est vraiment facile à utiliser et rapide.
Si vous pouvez dépenser un peu d'argent, ont definetely un oeil à LLBLGEn Pro 3.0
- complète .NET 4.0 support et il est un produit mature. Un bon soutien c'est aussi utile.
- un large soutien de la base de données (Oracle, MS Sql, Firebird, MySql, PostgreSQL, Sysbase)
- design agréable, modèle premier support et également la base de données premier support
Si votre budget est mince, essayez NHibernate
. C'est aussi un produit mature, mais il a une plus grande courbe d'apprentissage. Et si vous avez besoin de support, vous pouvez toujours appeler Ayende :-)
Pour les petits projets, EF 4.0 est un bon choix.
Je suis d'accord avec @this. __curious_geek que choisir le bon ORM dépend de vos besoins. Ayant travaillé sur Hibernate et Entity Framework, je pense que ce dernier est plus convivial car il s'agit d'un éditeur basé sur l'interface graphique. Sur le plan de la richesse des fonctionnalités, NHibernate a l'avantage de prendre en charge de nombreux fournisseurs de bases de données. La personnalisation de NHibernate s'est avérée beaucoup plus facile que de peaufiner Entity Framework.
En supposant que la plupart des outils répondent à vos exigences de base, je préférerais que NHibernate, en tant que communauté d'utilisateurs dynamique et engageante, soit un atout majeur pour tout outil.
La meilleure façon est de l'apprendre! Peut-être la question est "Quel cadre ORM dois-je choisir?" ... – Rippo
Question similaire: http://stackoverflow.com/questions/3172772/whats-the-best-feature-of-the-orm-framework-you-use – dcp
Pouvez-vous donner plus de détails sur votre scénario d'utilisation? –