Wenn Sie ein ORM auswählen, ist LINQ to SQL oder LINQ to Entities besser als NHibernate?

7

Ich finde, ich kann mehr mit NHibernate und sogar Castle als mit den Linq zu Entities, oder linq zu SQL.

Bin ich verrückt?

    
mrbradleyt 16.09.2008, 13:03
quelle

6 Antworten

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 davon nicht abschrecken. Linq ist immer noch eine ziemlich gute Idee .. Versuchen Sie Linq zu nHibernate: -)

    
Mendelt 16.09.2008, 13:05
quelle
6

Die großen Nachteile von NHibernate, Castle usw. sind, dass sie nicht gerade leicht sind (besonders NHibernate).

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

    
Ian P 16.09.2008 13:08
quelle
6

Ich habe sowohl NHibernate als auch LINQ to SQL verwendet. Aus meiner Sicht hängt es vom Projekt ab, wenn ich etwas schnell 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, finde ich die Protokollierung & amp; Transaktionsfunktionen einfach zu bedienen.

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, Ссылка für ausgezeichnete Screencasts zum Lernen von NHibernate zu checken.

    
Rutger 16.09.2008 13:18
quelle
4

Es ist zu bedenken, dass NHibernate ein absolutes Muss für die Konfiguration ist - besonders, da es hauptsächlich auf XML-Konfigurationsdateien basiert, da es sich um den ursprünglichen Hibernate handelt.

Fluent NHibernate trägt dazu bei, dies weniger schmerzhaft zu machen.

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

    
Kieran Benton 16.09.2008 13:15
quelle
4
  

Blockquote Linq fügt sich sicherlich in die allgemeine "Art und Weise" ein, in der .NET arbeitet

Huch, diese Art von Gefühl macht mir Angst. 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 komplette DDD-Anwendungen mit einem hohen Grad an Kohäsion, Trennung von Bedenken und die Möglichkeit, entkoppelten Code zu schreiben, erstellen, trotz aller Versuche, Dinge zu koppeln. Ich würde nicht zustimmen, dass .net gerne gekoppelt wird, certian tools wie 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.

    
Craig 10.06.2009 16:20
quelle
1

Ich habe das Entity Framework nicht ausprobiert, aber ich würde definitiv NHibernate über Linq an 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, welches Objekt Sie wollen (das Sie natürlich konfiguriert haben, zu verstehen), und es legt es in der Datenbank weg, unabhängig davon, was Sie damit gemacht haben.

>     
Chris Shaffer 16.09.2008 13:24
quelle

Tags und Links