2010-07-15 6 views
10

Ok, ich stelle diese Frage, weil ich total verwirrt bin. Ich verwendete den normalen Ansatz, um auf Datenbanken von C# zuzugreifen (ich meine, indem ich SQLConnection, OracleConnection, SQLCommand, executequery usw. verwende). Dann hörte ich von ADO.NET, ORM und lernte NHibernate (kein Profi, aber ich kann es schaffen).Was ist die am häufigsten verwendete Methode für den Zugriff auf Datenbank von C# heutzutage

Kürzlich sehe ich keine besonderen Aktivitäten in Bezug auf NHibernate viel. Leute um mich herum, die früher NHibernate benutzt haben (und ein Fan waren), bewegen sich jetzt zu anderen Methoden.

Was ist heute die am häufigsten verwendete Datenbankzugriffsmethode? Wie kann ich diesen sich ändernden Trend verfolgen?

+8

Was sagten die Leute um dich herum, dass sie sich bewegten? –

+0

Und nicht vergessen, SqlDataSource, ObjectDataSource, LinqDataSource, LINQ to SQL, Entity Framework, ADO.Net Data Services ... – DOK

+0

Eine Menge Dinge ... normalen Ansatz (sie sagen, es erleichtert TDD), Linq, Entity Framework etc ... etc. etc. etc ...... –

Antwort

19

Die am häufigsten verwendeten Methoden sind wahrscheinlich diese:

  • LINQ to SQL
  • Entity Framework
  • ADO.NET direkt
  • NHibernate
  • Andere O/RMs.

Alle von ihnen sind noch im Einsatz und sie haben verschiedene Vor- und Nachteile. Ich denke, Microsoft versucht derzeit, Leute dazu zu ermutigen, die Entity Framework zu verwenden.

4

Meiner Meinung nach, für die schnelle Entwicklung von Anwendungen, ist die Verwendung eines ORM-Tools wie LLBLGEN die beste Lösung. Sie können den Entwicklungsfortschritt drastisch beschleunigen.

10

Es gibt nur einen Weg - ADO.NET für SQL Server. Insbesondere die Connection- und Reader-Objekte dort. Nun mag man sagen, dass es Dinge wie Entity Framework gibt - aber interessanterweise sind sie ÜBER der realen Zugriffsebene und verwenden beide zuvor genannten Zugriffselemente. Sogar DataSets sind eine höhere Ebene (die Daten werden über einen DataReader gelesen).

Was ist die am häufigsten verwendete Datenbank Zugriffsmethode heutzutage?

Ich wette, es ist STILL ist Datasets. Die Menge der ungebildeten nach dem Drag & Drop-Prinzip ist IMHO immer noch die Mehrheit, und dieser Ansatz im Visual Studio führt zu Datasets.

Profis verwenden eine Art von ORM. Entity Framework wird nun von Leuten, die meistens nicht wirklich wissen, was ein ORM kann, richtig gedrängt. Gerade jetzt ist meine beste Wette immer noch NHibernate für eine hochwertige Schicht.

+4

Keine schlechte Antwort bis auf den letzten Absatz. Entity Framework wird von denen von uns verwendet, die erkennen, dass es verschiedene Arten von ORMs gibt, von denen jede einzigartige Stärken und Schwächen hat ... Deshalb haben wir Entity Framework für unsere Anwendung gewählt. –

+3

Nicht nur "ungebildete" Verwendung von Drag and Drop, sondern auch eine Menge existierender Systeme, die mit ADO.NET geschrieben wurden und typisierte Datasets geschrieben wurden und diese werden noch entwickelt - niemand wird ein ganzes System umgestalten, nur um neuere zu verwenden ORM-Technologie. –

+0

@Herbie: Legacy-Code ist eine klare Verteidigung, richtig. @Justin - EF war noch nie ein anständiger ORM. Es gibt kaum eine Stärke im Vergleich zu reiferen Angeboten. – TomTom

1

So gibt es einige Technologien, um auf die Datenbank in .NET zuzugreifen. Zuerst ist dies ADO.NET. Es ist eine "echte" Zugriffstechnologie, da andere (wie NHibernate, LINQ2SQL, Entity Framework (sie sind alle ORM)) ADO.NET verwenden, um tatsächlich eine Verbindung zur Datenbank herzustellen und Befehle dagegen auszuführen. Natürlich bietet .NET andere Möglichkeiten, mit der Datenbank zu interagieren, zum Beispiel einen Teil der COM-Schnittstelle zu importieren, aber sie sind nicht natürlich.

Es gibt auch Tools, die Ihnen bei der Kommunikation mit der Datenbank helfen. Es ist ADO.NET-Erweiterungen (wie Enterprise-Bibliothek Datenzugriff), und Tools können Sie mit Objekten (benannten Entitäten), die für objektorientierte Laufzeit als .NET natürlich sind, aber laden und speichern Sie diese Elemente aus der Datenbank. Diese Werkzeuge mit dem Namen ORM (objektrelationaler Mapper) und moderne Werkzeuge sind einfach zu bedienen und nett.

1

Ich persönlich liebe Linq To Sql mit CodeSmith die Entitäten zu generieren, genauer gesagt denke ich Plinqo hat die einfachste Erweiterbarkeit. Sie können alle Entity-Objekte in separate Dateien mit einer bearbeitbaren und einer generierten Version aufteilen. Damit können Sie Ihre DAL um so viele Hilfsfunktionen erweitern, wie Sie benötigen. Es verfügt über ein Visual Studio-Add-In, mit dem Sie alle Ihre Entitäten mit nur einem Klick neu generieren können.

Ich normalerweise in der Datenbank zuerst Design, so dass ich meine Änderungen in der Datenbank, gehen Sie zu VS regenerieren die Entitäten, und dann kann ich mit der Codierung fortfahren.

Unabhängig davon, was Sie wählen, ich denke, ein wichtiger Faktor für ein ORM ist in der Lage, es für Ihre Bedürfnisse zu konfigurieren, es gibt keine Einheitsgröße für alle.

BTW, ich arbeite nicht für Codesmith, ich es einfach verwenden :)

1

Nun, wenn ich eine auswählen muss, würde ich Entity Framework sagen, dass die allgemeinste Art und Weise ist, LINQ to SLQ ist veraltet In Zukunft wird NHibernate mehr und mehr in der Zukunft liegen.

Aber die beste Beratung ist wahrscheinlich versuchen, eine für das ganze Team auszuwählen! selbst wenn es einen Nachteil hat, haben sie alle irgendwann.

+0

@ Benjamin Tu das nicht. – Rawling

1

NHibernate und Entity Framework sind großartige Werkzeuge, um die Datenbank zu abstrahieren (EF Code First ist erstaunlich), aber in manchen Fällen ist dies schlecht.

Ich habe viele Anwendungen gesehen, dass die schlechte Leistung Datenbankverbindung ist, und NH oder EF nicht erlauben, Abfragen oder die Verwendung der meisten leistungsstarken Funktionen der Datenbank zu steuern, es sei denn Sie sind ein Experte in ORMs sind ungewöhnlich).

Persönlich bevorzuge ich die Kontrolle in meinen Händen zu behalten.

Ich habe ein Tool erstellt, Thunderstruck, das ich in meinen Projekten verwende und vor kurzem habe ich die Quelle auf gestellt.

Verwandte Themen