2009-07-10 11 views
2

Hi Ich bin anscheinend an einer ORM-Tool-Kreuzung und hätte gerne einen Rat von Leuten, die eine ähnliche Herausforderung hatten. In der Vergangenheit habe ich CodeSmith mit NetTiers Templates verwendet, um meine DAL zu generieren. Alles war ziemlich gut, aber ich habe mich entschieden, dies aus dem einen oder anderen Grund fallen zu lassen.ORM Tool - Kreuzung?

So bin ich an einem Scheideweg und haben festgestellt, die folgenden: -

  1. ich PLINQO (LINQ to SQL) ausgesehen haben, die einen großen Job jedoch mit Microsoft unsicher Linq zu tun, scheint dies SQL kann nicht eine gute Wahl sein.
  2. Linq to Entities - Dies ist immer noch in den Kinderschuhen, und ich kann falsch sein, aber die Menschen über die aufblasen beschweren und wie Stored Procedures
  3. Ich habe bei nHibernate sah, dies vielleicht die beste Wahl, aber es scheint ein steiler zu sein Lernkurve
  4. Dito für LLblgen
  5. Subsonic - Sind Sie sich nicht sicher?
  6. Bleib bei den bewährten NetTiers, vergiss den Bloat, vergiss, dass du gezwungen bist, die Enterprise-Bibliothek zu benutzen, vergiss das dynamische sql, vergiss, dass es fast keine Aktivität in den Foren gibt, vergiss das und benutze es!

Ich besitze bereits Codesmith und wollen nicht, etwas anderes zu kaufen, wird der Code generiert wird, muss Modus in Medium Trust arbeiten ...

Es können andere sein, die ich übersehen haben. Ich suche nach Antworten, die erklären, warum sich das ORM-Tool lohnt.

Dank Richard

+0

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

+0

Könnten Sie mehr Details zu Ihrem Projekt und Ihren Anforderungen geben? Es gibt eine Menge von Aspekten, von denen ORM abhängen kann. Zum Beispiel, werden Sie ein neues Projekt starten oder müssen Sie die alte Datenbank unterstützen? –

+0

@Alex - Werden neue Projekte, aber ich kann sehen, dass ich die Notwendigkeit haben, einige alte Projekte zu konvertieren ... ASP.NET 2.0 + Muss ohne Probleme im mittleren Trust-Modus (mosso Cloud-Hosting) Etwas ausgeführt werden das erzeugt keinen endlosen Bloat – Rippo

Antwort

2

ich .netTiers mich auf dem letzten Projekt verwendet. Aber auf der einen Seite, an der ich gerade arbeite, versuchen wir Linq 2 Entities. Sie haben recht, wenn Linq2EF nicht ausgereift ist. Wir machen uns die ganze Zeit über so etwas vor, deshalb verwenden wir T4-Vorlagen, die Code aus der EDMX-Datei generieren. Wir haben auch diese Vorlagen geändert, so dass wir Business Objects, Schnittstellen für die Injektion und DAL + DAO haben. Wir freuen uns, wie es jetzt funktioniert. Das Gute ist, dass wir LINQ gegen Entitäten verwenden können.

Sonst würde ich Ihnen auch Fluent nHibernate (link) vorschlagen. Es war eines der Dinge, die wir auch in Betracht gezogen haben. Aber Sie müssen viele Dinge selbst schreiben. Es ist nicht so, wie du es in .netTiers gewohnt bist, wo der ganze Code für dich generiert wird.

Seit Subsonic 3 (link) ist nur etwa eine Woche alt, ich schlage vor, Sie überprüfen es. Basierend auf dem, was ich gesehen habe, sieht es sehr vielversprechend aus. Und es verwendet T4, so dass Sie & schneiden können, um es Ihren Bedürfnissen anzupassen.

+0

Hallo danke dafür, schau dir Subsonic und Fluent nHibernate an. Eine andere schnelle Q, Sie erwähnen T4-Vorlagen, was sind das? Vielen Dank Richard – Rippo

+0

T4 sind die nicht genannten Funktionen von Visual Studio. Sie sind Vorlagen mit Code, der alles für Sie generieren kann. –

+1

"Aber Sie müssen viele Dinge auf eigene Faust schreiben" Ich bin nicht einverstanden. –

0

Aus Gründen, ein ORM zu verwenden, ist hier ein Link zu einem blog post by Glenn Block, der alles wirklich sagt. Was meine Erfahrung betrifft, wollte ich vor etwas mehr als einem Jahr ein ORM verwenden und wählte NHibernate.

Persistenz ist für mich ein gelöstes Problem, abgesehen von irgendeiner Form der Zuordnung von meinem Domänenmodell zu meinen relationalen Daten ist es etwas, worüber ich mir keine Sorgen mehr machen muss. Ich schaute auf Linq To SQL, aber es gab mir einfach nicht genug Kontrolle darüber, wie Daten meinen Objekten zugeordnet wurden und das Entity Framework war nicht annähernd reif genug für meinen Geschmack. Ein anderes grosses Projekt, einige von meinem Team, arbeiteten an gebrauchten NetTiers und CodeSmith und wie du sagst, die Aufblähung, Code-Generierung (und die schiere Menge davon) haben mich ein bisschen quietschig gemacht.Am Ende entschied ich mich für NHibernate, weil es für mich eines der ausgereiftesten ORMs ist und Funktionen bietet, die nicht nur ein feinkörniges Objektmodell unterstützen, sondern auch Abfragefunktionen und andere Performance-Probleme wie Zwischenspeichern.

Ja, ich gebe zu, dass die Lernkurve ziemlich steil ist, aber wenn Sie die Zeit investieren, sind die Vorteile, die Sie daraus bekommen, enorm. Die Blogs von Ayende Rahien und Fabio Maulo sind eine Fundgrube für Informationen über NHibernate. Es gibt einige LINQ-Unterstützung für NHibernate über diese LINQ provider, aber Steve Strong ist derzeit zusammen Funktionen, die vollständige Unterstützung von LINQ in NHibernate bietet. Es ist also alles für NHibernate, aber am Ende des Tages hängt es davon ab, was Sie am wohlsten sind.

+0

Ihr Link zu einem "Blogbeitrag von Glenn Block" verlinkt tatsächlich auf einen Blogbeitrag von Bill Karwin. Es ist eine großartige Zusammenfassung der Gründe für die Verwendung von ORM. – dthrasher

+0

Geändert jetzt auf den richtigen Blogpost. Danke für die Köpfe hoch. – KnackeredCoder

1

Ich habe ein paar Wochen lang versucht und mich dann mit NHibernate begnügt. Es ist sehr einfach anzupassen. Es gibt eine Lernkurve und es dauert ein wenig länger, um etwas wie linq to sql einzurichten, aber die Oberseite davon ist, dass es nicht magisch erscheint. Sie werden verstehen, wie es funktioniert und können es genau an Ihre Bedürfnisse anpassen. Die Community ist auch sehr gut und es gibt eine Menge verfügbarer Dokumentation. Es scheint mir eine gute Balance zwischen einem modernen ORM (Keine Code-Generierung, kann POCOs verwenden) und Reife zu sein.

0

Ich denke, dass die beiden namhaftesten und starke ORM-Tools jetzt nHibernate und LLBLGen Pro sind.

nHibernate = Sehr domänenorientiert.

LLBLGen Pro = datenorientiert.

Sie sind beide ausgezeichnet, und für jedes Projekt, das von seiner Natur abhängt, kann eine geeigneter sein als die andere. Häufig kommt es auch auf persönliche Entscheidungen und Vorlieben oder sogar auf die Kultur des Entwicklungsteams an.

Wie ich schon sagte Am Ende, insgesamt sind sie beide ausgezeichnet und sie haben beide ihre kleinen Vorteile/Nachteile.

+0

Danke Roberto, hast du eine Liste der beiden Vorteile/Nachteile oder einen Link wo ich mehr lesen kann .... – Rippo

1

Sie könnten DataObjects.NET versuchen. Dieser ORM verwendet den "Code-first" -Ansatz, unterstützt DB Schema Upgrade und LINQ. Überprüfen Sie diese Kurzbeschreibung http://www.x-tensive.com/Products/DO/.