2009-07-15 13 views
2

ich eine Website für einen Nachrichtenkanal zu bauen ..Linq zu Entitäten vs fließend nhibernate vs LINQ to SQL (Hilfe)

Bitte helfen Sie mir entscheiden, welche Technologie für Datenoperationen zu bedienen?

1) Linq to Entities 2) Linq 3) fliessend NHibernate 4) ADO.Net

Website wird auf SQL basierend auf ASP.Net MVC und C#.

Hauptthemen:

1) Sollten einfach und Umfang aufrecht zu erhalten.

2) gute Leistung

Bitte äußern Sie Ihre Ansicht mit einem Beispiel, wenn möglich ..

Dank

Chitresh

Antwort

5

Pro und Contra:

LINQ to Entities

Ermöglicht das Hinzufügen einer weiteren Abstraktionsschicht (Entität) anstelle der direkten Zuordnung zu Tabellen (wie in LINQ to SQL). Unterstützen Sie mehrere Datenanbieter (nicht nur SQL Server). Erfordert etwas mehr Lernzeit als LINQ to SQL. Arbeitseinheitskonzept bereitstellen. Mittlere bis hohe Lernkurve.

LINQ to SQL

Hier können Sie einfach Ihre Tabellen abzubilden, gespeicherte Procs usw. Bieten Arbeitseinheit Konzept. Arbeiten Sie nur am SQL Server-Backend. Einfach zu implementieren, aber erfordern dbml Rebuild, wenn Datenbankschema ändert (1-Weg-Synchronisation von db zu Objekt), so ein bisschen schwieriger zu pflegen. Niedrig - Mittlere Lernkurve. Leistung, ... Ich denke, Stack Overflow verwendet LINQ to SQL. Was denkst du, wie es funktioniert? Arbeitseinheit Konzept haben.

Fluent NHibernate

Kann nicht sagen ... nichts davon wissen. Wenn es etwas wie NHibernate ist, sollte es ziemlich flexibel sein. Wahrscheinlich hohe Lernkurve. Jemand korrigieren Sie mich zu diesem ...

ADO.NET (nicht über Named DataSet sprechen hier ...)

Sollte die schnellste (keine Abstraktion) sein. Flexibel, biege es wie du willst. Geringe Lernkurve. Sehr einfach, mach alles selbst angehen. Die meiste Zeit gehe ich diese Route für einfaches Projekt. Kann die Produktivität senken. Sie können es mit Codegenerierung erweitern, um eine gewisse Produktivität zu erzielen.

Ihre anderen Optionen ... Subsonic vielleicht.

+0

NHibernate hat ein bisschen eine Lernkurve, aber Fluent NHibernate leistet eine gute Arbeit, um das zu mindern und Sie von all diesen XML-Dateien fernzuhalten. –

4

NHibernate (Fluent NHibernate)

Fluent NHibernate ist eine Komponente, die Sie Karte Ihre Entities zu helfen, so dass NHibernate weiß, wo es wird Ihre Daten aus der Datenbank setzen.Wenn Sie NHibernate nie verwendet haben, kann es ein wenig schwierig sein, eine NHibernateSession zu erstellen und zu verwalten, aber es gibt viele Informationen über stackoverflow und andere Orte wie S#arp für ein Beispiel der Sitzungsbehandlung und , um einige Lektionen im Mapping zu bekommen.

3

Ich würde mit Linq zu Entities oder NHibernate gehen (eigentlich würde ich mit NHibernate gehen, aber das ist einer, den ich am meisten kenne) - UND ADO.Net (aber nur ein bisschen).

Beginnen Sie mit allem, was Sie mit NHibernate/Entities tun können. Wenn es einmal läuft, wird es bemerkenswert produktiv sein. Aber es gibt Situationen, in denen Sie etwas mehr Leistung benötigen (haben Sie ein gutes Profiling-Tool?). In diesen Fällen codieren Sie sie in Ado.Net (das sollte weniger als 10% Ihrer Datenbankaufrufe ausmachen). Mit NHibernate können Sie die NHibernate-Sitzung verwenden, um auch Ihr Verbindungsobjekt für Sie zu erhalten.

+0

Ein gutes Beispiel dafür, wann Sie ADO.NET brauchen, ist, wenn Sie eine .csv-Datei direkt in die Datenbank laden, indem Sie eine Massenkopie oder eine beliebige andere Massenkopie verwenden. LINQ to Entities unterstützt keine Massenkopie, und es ist schmerzhaft langsam. – Contango

+0

@Gravitas: das gilt für jedes ORM. Wenn Sie mit Massenproblemen zu tun haben (1000 Zeilen hintereinander), ist ein ORM nicht die Antwort. ORMS sollte glänzen mit "hol mir diesen Datensatz und alle abhängigen Objekte, die ich damit arbeiten muss", oder, "hol mir die zweite Gruppe von 20 Datensätzen für diese Abfrage". –