89 votes

Quel ORM pour .NET que vous recommanderiez ?

Je n’ai pas travaillé sur un projet .NET pendant un certain temps (plus d’un an). Avant que je n’ai jamais utilisé un ORM pour une application .NET. Quelles sont vos prend là-dessus ? En utilisant un a-t-il un sens ? Ceux qui devrais-je envisager d’essayer ?

61voto

Matt Hinze Points 9686

47voto

Neil Hewitt Points 2163

Pas tous les FORMULAIRES sont égaux. Vous ne pourriez pas vouloir un ORM - peut-être vous vraiment voulez juste un DAL générateur pour éviter les IMPURETÉS de méchanceté. Peut-être que Linq to SQL serait travailler pour vous si vous voulez juste faire abstraction du SQL mais n'ont pas de problème mettre de la logique d'accès aux données dans votre code.

Vivant avec un ORM n'est pas un zéro friction de l'expérience. Vous avez besoin de savoir de quel côté effets de votre choix sur votre code. Il peut se contractent que vous n'aimez pas (dire que vous avez à inhert d'une classe de base et ne peut pas utiliser POCOs). Il peut appliquer efficacement une architecture à plusieurs niveaux quand peut-être vous ne voulez pas vraiment (bien que je ne vois pas pourquoi vous ne seriez pas ).

Si vous voulez un plein sur, middleware de style, très complet ORM qui est extensible et peut être utilisé dans de nombreux types différents de réglage et d'échelle, et peut carte bien à des bases de données existantes, puis aller avec NHibernate. Zéro question. C'est IMNSHO les plus développés de l'ORM .NET aujourd'hui, avec tout le respect dû à certaines des offres commerciales (bien que LLBLGen Pro est à juste titre salué - mais c'est un DAL générateur plutôt que d'une solution d'intergiciel, et ce n'est pas ma préférence).

Et si vos besoins de cartographie sont simples et vous n'avez pas besoin d'un contrôle précis du cycle de vie des objets, certainement envisager d'ActiveRecord sur le dessus de NHibernate. Mais sachez qu'il est tout à fait différente de l'idiome de NHibernate en termes de gestion de session, en dépit d'être construit au-dessus d'elle, et de ne pas confondre les deux. Que, comme je l'ai constaté à mon prix, peuvent vraiment à vis de vous :-)

22voto

KristoferA Points 8036

Aujourd'hui: LINQ to SQL. Il est facile à utiliser, permet d'économiser une tonne de temps au cours du développement, et se comporte en général contre nice la base de données en générant (pour la plupart) très efficace des requêtes.

La version actuelle de ADO.NET Entity Framework (EF) n'est pas prêt pour la production, à mon avis, trop de questions à la fois dans le concepteur et dans le temps (par exemple, des temps d'initialisation, pauvres SQL généré par le L2E, etc). La prochaine version de EF sera je l'espère changer cela.

Mise à jour: Voir à ce sujet: http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=4107623&SiteID=1&pageid=0

19voto

Brad Robinson Points 5469

Pour une solution vraiment léger : Massive ou PetaPoco.

Les deux sont des fichiers .cs seul sans dépendances sauf ce qui est dans le GAC.

(divulgation complète, PetaPoco est quelque chose que j’ai écrit)

11voto

jbandi Points 4896

Depuis personne n'a mentionné encore, je veux juste jeter dans le Génome.

J'ai travaillé sur un "gros" projet réussi (plusieurs millions, plusieurs années, >10 développeurs) pour laquelle nous avons choisi le Génome de la persistance de la solution.

Bien sûr, cela a été il y a quelques années, lors de l'ORM dans le .NET-espace a été l'un relatif à la nouvelle chose.

J'ai été responsable de l'accès aux données du projet, et Génome quitté une impression de propreté. Aujourd'hui, je travaille beaucoup avec Hibernate en Java-espace, et à partir d'un point de vue développeur Génome semblait manière plus intuitive (même si il a une autre philosophie architecturale et, par conséquent, ne peut pas être comparé directement).

Le génome est un produit commercial. Génome a beaucoup évolué. Aujourd'hui, il prétend être LINQ-conforme. Si je serais en mesure de l'évaluation d'un ORM-solution pour .NET je serait certainement regarder Génome de nouveau.

Un autre produit commercial, pas encore mentionné est Telerik libre Accès (anciennement Vanatec libre Accès).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X