2009-07-10 8 views
2

Salut, je semble être à un carrefour d'outils de l'ORM et aimerais avoir des conseils de gens qui ont fait face à un défi similaire. Dans le passé, j'ai utilisé CodeSmith avec NetTiers Templates pour générer mon DAL tout a été très bon, mais j'ai décidé de laisser tomber pour une raison ou une autre.ORM Tool - À la croisée des chemins?

Je suis à la croisée des chemins et ont trouvé les éléments suivants: -

  1. J'ai regardé PLINQO (LINQ to SQL) qui semble faire un grand travail mais avec Microsoft incertain de LINQ to SQL cela peut ne pas être un bon choix.
  2. LINQ to Entities - C'est encore à ses débuts et je peux me tromper, mais les gens se plaignent du ballonnement et comment les procédures stockées
  3. J'ai regardé NHibernate, ce peut-être le meilleur choix, mais il semble y avoir une pente raide courbe d'apprentissage
  4. Idem pour LLblgen
  5. Subsonic - Vous ne savez pas à ce sujet?
  6. Stick avec les NetTiers éprouvés, oubliez le ballonnement, oubliez que vous êtes obligé d'utiliser la bibliothèque d'entreprise, oubliez le SQL dynamique qu'il crée, oubliez que leur activité sur les forums est presque nulle, oubliez ça et utilisez-le!

je possède déjà CodeSmith et ne souhaite pas acheter quoi que ce soit d'autre, le code généré doit fonctionner en mode Medium confiance ...

Il peut y avoir d'autres que j'ai manqué. Je suis à la recherche de réponses qui expliquent pourquoi l'outil ORM mérite d'être examiné.

Merci Richard

+0

Voir ceci: http://stackoverflow.com/questions/567304/which-orm-tool-should-i-use-for-net-development –

+0

Pourriez-vous donner plus de détails sur votre projet et vos exigences? Il y a beaucoup d'aspects sur lesquels ORM peut compter. Par exemple allez-vous commencer un nouveau projet ou vous devez soutenir la base de données existante? –

+0

@Alex - Sera de nouveaux projets, mais je peux voir que je peux avoir besoin de convertir certains anciens projets ... ASP.NET 2.0 + Doit fonctionner sans problèmes en mode Medium Trust (mosso nuage hébergement) Quelque chose ça ne génère pas de ballonnement sans fin – Rippo

Répondre

2

je me .netTiers le dernier projet. mais sur celui que je travaille en ce moment nous essayons Linq 2 Entities. Vous avez raison de dire que Linq2EF n'est pas mature. Nous en parlons tout le temps, c'est pourquoi nous utilisons des templates T4 qui génèrent du code depuis le fichier EDMX. Nous avons également modifié ces modèles afin d'avoir Business Objects, Interfaces pour injection et DAL + DAO. Nous sommes heureux de la façon dont cela fonctionne maintenant. La bonne chose est que nous pouvons utiliser LINQ contre les entités.

Sinon, je suggère également Fluent nHibernate (link) pour vous. C'était l'une des choses que nous avons également considérées. Mais vous devrez écrire beaucoup de choses par vous-même. Ce n'est pas comme si vous étiez habitué à .netTiers où tout le code est généré pour vous.

Depuis Subsonic 3 (link) est d'environ une semaine, je vous suggère de vérifier. Basé sur ce que j'ai vu, il semble très prometteur. Et il utilise T4, de sorte que vous pouvez couper & pour répondre à vos besoins.

+0

Salut merci pour cela, je vais regarder Subsonic et Fluent nHibernate. Un autre Q rapide, vous mentionnez T4 quels sont ces modèles? Un grand merci Richard – Rippo

+0

T4 sont les capacités non-menioned de Visual Studio. Ce sont des modèles avec du code qui peut générer n'importe quoi pour vous. –

+1

"Mais vous devrez écrire beaucoup de choses par vous-même" Je suis un peu en désaccord. –

0

Pour des raisons d'utiliser un ORM voici un lien vers un blog post by Glenn Block qui dit tout vraiment. En ce qui concerne mon expérience, il y a un peu plus d'un an, je cherchais à utiliser un ORM et j'ai choisi NHibernate. La persistance est pour moi un problème résolu, au-delà d'une forme de mappage de mon modèle de domaine vers mes données relationnelles, c'est quelque chose dont je n'ai plus à me soucier. J'ai regardé Linq To SQL mais cela ne me donnait pas assez de contrôle sur la façon dont les données étaient mappées sur mes objets et Entity Framework n'était pas assez mature à mon goût. Un autre projet important de mon équipe travaillait sur NetTiers et CodeSmith, et comme vous dites, le gonflement, la génération de code (et le montant total) m'a fait me poser quelques questions.En fin de compte, j'ai choisi NHibernate parce que pour moi, c'est l'un des ORMs les plus matures et il offre des fonctionnalités qui non seulement supporteraient un modèle d'objet finement granulé, mais qui incorporeraient des fonctionnalités d'interrogation. comme la mise en cache. Oui, j'admettrai que la courbe d'apprentissage est assez raide mais si vous investissez le temps, les bénéfices que vous en retirerez seront énormes. Les blogs de Ayende Rahien et Fabio Maulo sont une mine d'informations sur NHibernate. Il existe un support LINQ pour NHibernate via ce LINQ provider mais Steve Strong est actuellement en train de mettre en place des fonctionnalités qui fourniront un support LINQ complet dans NHibernate. Donc, tout va pour NHibernate mais à la fin de la journée, cela dépend de ce que vous êtes le plus à l'aise avec.

+0

Votre lien vers un "post de blog par Glenn Block" renvoie en fait à un article de Bill Karwin. C'est un excellent résumé des raisons d'utiliser ORM. – dthrasher

+0

Modifié maintenant vers le bon article de blog. Merci pour l'information. – KnackeredCoder

1

J'en ai essayé quelques-unes pendant quelques semaines et j'ai finalement réglé avec NHibernate. C'est très facile à customiser. Il y a une courbe d'apprentissage et cela prend un peu plus de temps pour mettre en place quelque chose comme linq to sql mais l'avantage de ceci est que ça n'a pas l'air magique. Vous comprendrez comment cela fonctionne et serez capable de le personnaliser exactement pour répondre à vos besoins. La communauté est également très bonne et il y a beaucoup de documentation disponible. Il me semble être un bon équilibre entre un ORM moderne (génération de code, peut utiliser POCO), et la maturité.

0

Je pense que les deux plus réputés et puissants outils ORM sont actuellement NHibernate et LLBLGen Pro.

nHibernate = Très orienté sur le domaine.

LLBLGen Pro = Orienté vers les données.

Ils sont tous deux excellents, et pour chaque projet en fonction de sa nature, l'un peut être plus approprié que l'autre. Il revient également souvent à des choix et préférences personnels ou même à la culture de l'équipe de développement.

Comme je l'ai dit à la fin, dans l'ensemble, ils sont tous les deux excellents et ils ont tous les deux leurs légers avantages/inconvénients.

+0

Merci Roberto, avez-vous une liste des avantages/désavantages ou un lien où je peux lire plus .... – Rippo

1

Vous pouvez essayer DataObjects.NET. Cet ORM utilise l'approche "Code-first", prend en charge la mise à niveau du schéma DB et LINQ. Vérifiez cette brève description http://www.x-tensive.com/Products/DO/.