Welches ORM-Tool sollte ich für .Net-Entwicklung verwenden [geschlossen]

8

Mein Unternehmen möchte ein ORM für die Neuentwicklung in .Net verwenden. Wir betrachten derzeit nHibernate, wegen seiner Popularität, aber LLBLGen ist eine andere Option, die wir berücksichtigen können. Kosten sind kein primärer Faktor. Wir brauchen eine Lösung, die eine gute Trennung des Domänenmodells von der Datenbank, eine gute Caching-Strategie, Entwicklungsproduktivität (d. H. Wenn ich es in einer GUI statt Konfigurationsdateien bearbeiten kann), guten Kundensupport bietet.

Ich weiß, dass nHibernate sehr beliebt ist, aber ich weiß auch, dass der Preis (es ist kostenlos) ein Teil dieses Grundes für Open-Source-Typen sein kann. Da die Kosten kein primärer Faktor sind (es sei denn, der Preis ist $ 10.000), welche würden Sie angesichts unserer Umstände wählen? Welche anderen Faktoren außer denen, die ich aufgelistet habe, würden Sie am wichtigsten bei der Auswahl eines ORM halten?

Lösung

Wir haben uns schließlich für NHibernate als Lösung entschieden, aber im Nachhinein glaube ich, dass ich mit LL gegangen wäre, wenn wir es noch einmal machen müssten. Ich bin nur nicht von den XML-Mapping-Dateien gefunden. Die Code-Generatoren, die ich für NHibernate gefunden habe, lassen viel zu wünschen übrig. Ich finde Fluent NHibernate als eine interessante Entwicklung, aber ich warte lieber darauf, dass es erst reift, bevor ich es benutze.

Wie sich herausstellte, waren der wichtigste Teil meines Lernprozesses nicht die Technologien, sondern zwei Entwurfsmuster: das Repository und die getrennten Schnittstellenmuster. Durch die Definition einer Repository-Schnittstelle für den Datenzugriff (Jeffrey Palermo hat eine Reihe von Blog-Beiträgen und die beiden MVC-Bücher von Apress und Wrox zeigen dies ebenfalls) können wir LinqtoSQL, LLBLGen, NHibernate usw. verwenden und die DAL-Implementierung austauschen später, wenn wir wechseln. Während einer meiner Kollegen NHibernate in seiner App verwendet, habe ich mich für LinqToSQL in meiner neuesten App entschieden, und es hat gut funktioniert.

    
John 19.02.2009, 21:42
quelle

10 Antworten

8

Wenn Ihnen nichts ausmacht, würde ich LLBLGen vorschlagen.

Vollständige Liste der Funktionen hier.

Von der Website:

  

Wahrer datenbankunabhängiger Code

     

Voll   Entitätstypvererbung

     

Linq Unterstützung

     

Getippte Listen und typisierte Ansichten

     

Gespeicherte Prozeduren unterstützen

     

Flexibler Nebenläufigkeitsmechanismus

     

Fein abgestimmter Validierungsrahmen

     

Abgeleitete Tabellenunterstützung

    
Ric Tokyo 19.02.2009, 21:53
quelle
4

Schauen Sie sich DataObjects.net (GPL + Werbung) an.

    
Alex Yakunin 03.07.2009 20:53
quelle
3

Ich schlage vor, dass Sie sich zunächst die verschiedenen ähnlichen Fragen ansehen, zB: Ссылка

    
M4N 19.02.2009 21:45
quelle
3

Ich benutze LlblGenPro seit 2003. Es ist ein großartiges Produkt, preiswerter, wunderbarer Support durch die Lösungsdesign-Website. Frans (der Hauptentwickler) gibt bei Bedarf Patches und neue Vollinstallationen aus, so dass Clients, bei denen Probleme auftreten, schnell Fixes nutzen können.

Die aktuelle Version unterstützt Linq zusammen mit seiner traditionellen Zugriffsinfrastruktur. Version 3 ist in Entwicklung, wird aber voraussichtlich erst 2010 veröffentlicht.

LlbGen beginnt mit dem Lesen Ihrer aktuellen Datenbankschemata, die bei der Entwicklung der db-to-object-Zuordnung im Vergleich zu nHibernate Zeit sparen können.

Es gibt Dinge, die ich mit LlblGen verbessern möchte, aber ich bin ein sehr glücklicher Langzeitbenutzer und ihre Unterstützung ist nicht zu schlagen.

    
automatic 19.02.2009 22:22
quelle
2

Es hängt ein bisschen davon ab, was Sie wollen:

  • Möchten Sie eigene Domänenklassen erstellen, die Sie nicht von ORM-definierten Basisklassen oder Schnittstellen erben müssen, dann ist NHibernate die bevorzugte Lösung.

  • Möchten Sie Entitätsklassen basierend auf Ihrem Datenbankmodell automatisch generieren, dann sollten Sie LLBLGen verwenden.

Frederik Gheysels 19.02.2009 21:46
quelle
2

Noch eine Abstimmung für LLBLGEN, könnte nicht ohne sie leben!

    
tbone 20.02.2009 21:57
quelle
1

Wir benutzen nHibernate sehr. so weit so gut.

    
ralph 19.02.2009 21:53
quelle
0

SignumFramework hat einen vollständigen LINQ-Anbieter , der auf einem benutzerorientierten Ansatz basiert. Die andere Seite ist, dass es nur für neue Entwicklungen (nicht für bestehende Datenbanken) in Ordnung ist.

    
mapache 11.03.2009 11:56
quelle
0

Wenn Sie von vorne anfangen, können Sie auch NHiberbate verwenden, das einen soliden Hintergrund hat. Aber wir verwenden LLBLGen Pro in mehr als einem Projekt, und es ist sehr solide und orthogonal. Es hat auch eine sehr gute Dokumentation. NHibernate hat eine große Community (wenn wir auch Hibernate hinzufügen), aber LLBLGen ist ein sehr ausgereiftes Produkt, sehr hilfreiches Forum und sehr gute Dokumentation.

Was ist das RDMS zu verwenden? Wir verwenden LLBLGen Pro mit Oracle und trennen absolut datenbankspezifische und generische Operationen ohne Probleme. Es hat vermieden Innerer Plattformeffekt perfekt. (Denken Sie zum Beispiel an Oracle-Sequenzen und SQL Server-Identitätsfelder. Es ist kein Problem mit LLBLGen Pro.)

LLBLGen Pro ist ein sehr umfangreicher Code-Generator. Er ordnet Objekte in der Datenbank einer Datenbankzugriffsebene als ein Projekt zu, das problemlos zu Ihrer Lösung hinzugefügt werden kann. Dies hat einen sehr guten Vorteil, der nicht auf den ersten Blick sein kann: Wenn eine gespeicherte Prozedur oder sogar ein Feld geändert / entfernt wird, werden Sie den Fehler zur Kompilierzeit feststellen, nicht zur Laufzeit. Also, wenn Sie bereits eine laufende Datenbank haben, gehen Sie mit LLBLGen Pro.

Sie können die Datenquellenkomponenten auch Visual Studio hinzufügen, wenn Sie ein Drag-and-Drop-Typ sind und die Daten problemlos binden können. Einige Leute finden es nützlich für ASP.NET-Projekte.

Noch eine wichtige Sache: Getippte Listen: Diese sind sehr nützlich, um Datenquellen zu erstellen, ohne irgendeinen Code in der Datenbank zu ändern. Wenn Sie also einige Raster haben, die Daten anzeigen, können Sie Daten bereitstellen, ohne die Datenbank zu berühren, die in kritischen Umgebungen sehr sicher wird.

Also würde ich LLBLGen Pro empfehlen, obwohl N / Hibernate mehr Benutzer hat.

    
Caglar Toklu 04.06.2009 16:40
quelle
0

Für kleine Projekte habe ich Sooda verwendet, aber das war vor ungefähr einem Jahr. Jetzt nur und definitiv NHibernate .

    
dariol 23.06.2009 21:44
quelle

Tags und Links