2010-01-21 14 views
5

Dies ist wahrscheinlich ein langer Schuss.Gibt es einen NHibernate Killer?

In der .NET-Welt hat jemand ein ORM (Commercial oder Open) gefunden, das die Flexibilität von NHibernate bietet, um domänengesteuertes Design mit guter Linq-Unterstützung zu unterstützen? Linq to sql ist tot, Entity Framework unterstützt noch nicht sehr gut POCO's, Lazy Load oder Object first development, und keines der alten Standbys wie LLBLGen scheint es zu sein.

Wer findet auf dem ORM-Markt etwas Neues und Aufregendes?

Danke!

+7

Wer sagt LINQ to SQL ist tot? Hat Microsoft einen Patch veröffentlicht, damit er plötzlich nicht mehr funktioniert? –

+2

Und was ist mit NHibernate, wenn Sie nach Alternativen suchen? Wenn es die XML-Mappings sind, schauen Sie sich Fluent NHibernate an. Wenn Sie sich auch nicht darum kümmern, werfen Sie einen Blick auf Castle ActiveRecord, das NHibernate-basiert ist, aber das Mapping noch einfacher macht und auch etwas von der Sitzungsverwaltung abstrahiert. –

+0

@Kyralessa: LinqToSql ist nicht tot, aber Microsoft setzt seine Kraft hinter Entity Framework (haben Sie die Anzahl der PDC 2009-Sitzungen auf EF vs. LinqToSql gezählt?). Der Linq-Provider von NHibernate ist in Arbeit und das scheint für Fregas eine Rolle zu spielen. –

Antwort

4

Siehe ORMBattle.NET - es wird nicht genau Ihre Frage beantworten (übrigens gebe ich kaum zu, dass dies möglich ist), aber es gibt einige Informationen über die Qualität der LINQ-Unterstützung.

Hinweis (oder Haftungsausschluss): Ich bin eine der Personen im Zusammenhang mit der Erstellung von ORMBattle.NET, sowie einer der DataObjects.Net Autoren.

+2

Danke für den Haftungsausschluss, ich schätze es sehr. Zusätzliche Informationen zur ursprünglichen Frage: LLBLGGen wurde gebeten, nicht auf ORMBattle.net aufgeführt zu werden. –

+1

Ich hatte eindeutig nicht die Absicht, diese Tatsache zu verbergen. Es ist also wirklich besser, es einfach überall zu wiederholen, wo dies nicht absolut offensichtlich ist. –

+1

Bitte aktualisieren Sie das Diagramm! Es ist veraltet. – hazzik

1

Nein, ich kenne keine. Da NHibernate sehr beliebt ist und sehr gut funktioniert und EF wahrscheinlich den Großteil des Rests übernimmt (insbesondere Entwickler, die sich nicht von Microsoft-basierten Frameworks entfernen wollen), ist die Einstiegshürde für einen neuen Player sehr hoch hoch. Ein anderes ORM müsste etwas hinzufügen, das über das hinausgeht, was NHibernate derzeit bietet, um ein angemessenes Interesse zu erreichen.

Wenn es ein Open-Source-Projekt gab, das eine bessere Linq-Unterstützung in einem ORM bieten wollte, hätte es meiner Meinung nach mehr Erfolg bei der Installation von NHibernate Linq, anstatt zu versuchen, ein eigenes Framework von Grund auf zu erstellen.

2

Welche Version von .NET Framework sprechen Sie? 3.5? 4.0?

Es gibt ziemlich viele ORMs draußen und einige der kommerziellen erfüllen möglicherweise Ihre Bedürfnisse (oder arbeiten an neuen Versionen, die Ihre Bedürfnisse erfüllen). Es ist ziemlich entmutigend, aus kommerzieller Sicht sowohl gegen NHibernate als auch gegen Entity Framework zu konkurrieren. Microsoft hat es viel schwerer als nötig gemacht, einen Linq-Provider zu schreiben, weshalb so wenige ORMs einen haben. Das Schreiben eines domainorientierten designorientierten ORM, das mehrere Datenbankanbieter unterstützt, ist ebenfalls ein ziemlich steiler Anstieg.

NHibernate hat sicherlich alle Momentum, aber das bedeutet nicht, dass es unbesiegbar ist. Es ist schwer, mit der kostenlosen Open-Source-Software & zu konkurrieren, die einen mehrjährigen Vorsprung hat, selbst für ein Unternehmen mit den finanziellen Ressourcen von Microsoft.

Ich denke, Sie müssen nur geduldig sein. Der Linq-Anbieter von NHibernate verbessert sich und die anderen ORM-Anbieter arbeiten intensiv an der Verbesserung ihrer Angebote. Die Dinge könnten sich in den nächsten zwei Jahren erheblich ändern.

1

Ich würde es nicht einen "NHibernate Killer" nennen, aber SubSonic funktioniert gut. Es ist einfach zu verwenden, ermöglicht es Ihnen, zwischen dem Active Record-Muster und dem Repository-Muster zu wählen. Es unterstützt POCOs, ermöglicht die Verwendung von Object-First-Entwicklung und das Einrichten von Lazy-Loading ist einfach genug.

0

CQRS könnte als ein NHibernate Killer betrachtet werden. Die grundlegende Voraussetzung ist, dass Ihre Domänenobjekte nicht zur Unterstützung Ihres Lesemodells und Ihrer Anwendungsabfragen verwendet werden. So können Sie anfangen, etwas mehr wie einen Dokumentenspeicher zu verwenden, um Ihr Aggregat zu halten oder Event-Sourcing zu verwenden. Um Ihr Lesemodell zu aktualisieren, müssen Sie sich die von Ihrem Aggregat veröffentlichten Ereignisse anhören, damit es sich entsprechend aktualisieren kann. Mit diesem architektonischen Stil konnten wir die Abhängigkeit von NHibernate eliminieren.Wenn wir uns für ein RDBMS entscheiden, liegt das an den Stärken der Datenbank und nicht an der Standardauswahl.

+0

Es scheint immer noch, als würden Sie NHibernate oder ein anderes ORM für grundlegende CRUD-Sachen brauchen. Für erweiterte Berichte stimme ich zu, dass es nicht wirklich das beste Tool ist ... aber Sie könnten für Entity Framework argumentieren – fregas

+0

NHibernate wird an diesem Punkt zu viel. Es gibt eine Menge "Mini-ORMs", die auftauchen - sogar eine Open-Source-Version von den Stack Exchange-Jungs. –