2008-09-16 10 views

Antwort

18

Nein, du bist nicht verrückt. nHibernate ist ein vollständiger OR-Mapper, Linq to SQL und Linq to Entities implementieren nicht alles, was Sie von einem OR-Mapper erwarten würden, und richten sich an eine etwas andere Gruppe von Entwicklern.

Aber lassen Sie sich dadurch nicht von linq abhalten. Linq ist immer noch eine ziemlich gute Idee .. Versuchen Sie Linq to nHibernate :-)

6

Die großen Nachteile zu NHibernate, Schloss, etc., ist, dass sie nicht genau leicht (besonders NHibernate.)

Linq to SQL ist gut für ein leichtes, eingeschränktes ORM.

+0

Genau. Sie sind deutlich langsamer als viele schwere ORM-Tools. –

+1

nHibernate ist unglaublich schnell, vor allem weil es bei richtiger Verwendung exzellentes SQL erzeugt. Leider ist dieses "richtig verwendet" selten mit nHibernate offensichtlich. –

4

Eine Sache zu beachten ist, dass NHibernate kann ein absolutes Schwein zu konfigurieren - vor allem, da es hauptsächlich auf XML-Config-Dateien aufgrund seiner Wurzeln als der ursprüngliche Hibernate basiert.

Fluent NHibernate geht einen Weg, dies weniger schmerzhaft zu machen.

Linq sicherlich passt jedoch in die allgemeine "Art und Weise", in der .NET funktioniert.

6

Ich habe sowohl NHibernate und LINQ zu SQL verwendet. Aus meiner Sicht hängt es vom Projekt ab, wenn ich etwas Schnelles brauche, würde ich L2S wählen, es ist so einfach, das dbml-Mapping zu erstellen und es zu benutzen. Wenn ich eine höherwertige Unternehmenslösung entwickle, würde ich mich für das bewährte ORM - NHibernate entscheiden. Ich finde, dass die Logging-Funktionen & einfach zu verwenden sind.

LINQ to SQL hat eine relativ kurze Lernkurve, NHibernate hat eine viel steilere Lernkurve.

LINQ to SQL unterstützt nur SQL Server. Wenn Sie also eine Oracle-Datenbank haben, ist die Entscheidung bereits gefallen - NHibernate.

Ich würde empfehlen, http://www.summerofnhibernate.com/ für ausgezeichnete Screencasts beim Lernen NHibernate.

1

Ich habe nicht das Entity Framework versucht, aber ich würde definitiv NHibernate über Linq zu SQL empfehlen; Der größte Grund, den ich geben kann, ist nur die Kontrolle. Linq to SQL hat viel mehr Kontrolle über alles, lädt das Objekt und verwaltet alle Arten von Tracking-Informationen über das Objekt. Wenn Sie serialisieren/deserialisieren, können die Verfolgungsinformationen verloren gehen und seltsame Dinge können beim erneuten Speichern passieren. NHibernate funktioniert mehr als ein Repository sollte - Sie übergeben es, was auch immer Sie wollen (das Sie es natürlich zu verstehen konfiguriert haben), und es legt es in der Datenbank weg, unabhängig davon, was Sie damit getan haben.

4

Blockquote Linq sicherlich obwohl passt in den allgemeinen 'Weg', in dem .NET

Huch, diese Art von Stimmung macht mir Angst funktioniert. Das RAD-Zeug, das in .net eingebaut ist, ist NICHT wie Punktnetz funktioniert, es ist nur ein Werkzeugsatz, um Prototypen zu bekommen. Mit .NET können wir vollständige DDD-Anwendungen mit hohem Zusammenhalt, problematischen Zusammenhängen und entkoppeltem Code schreiben, trotz aller Versuche, Dinge zu koppeln. Ich würde nicht zustimmen, dass .net gerne gekoppelt wird, certian tools gerne gekoppelt werden, ich werde linq zu sql in diesem Kampf enthalten. linq to sql zerstört die Idee eines separaten Domänenmodells.Ich zittere bei dem Gedanken, mein Datenbankschema als zugrundeliegende Modellobjekte zu verwenden. Korrekte ORM-Tools sollten es uns ermöglichen, zuerst unsere Domäne zu modellieren und dann unsere relationale Datenbank mit diesen Modellen zu verknüpfen. Nicht umgekehrt.