Die aktuellen Best Practices von Microsoft für den Aufbau einer .NET-Datenschicht? Und die Realität?


13

Das Entwicklerteam, mit dem ich zusammenarbeite, wird in Kürze auf .NET 4.0 umsteigen. Die verwendete Datenzugriffsklassenbibliothek verwendet jedoch weiterhin ADO.NET "classic", dh SqlDataReader , DataTable und dergleichen. In der Zwischenzeit scheint Microsoft und wahrscheinlich der Rest der Welt mit Entity Framework und WCF Data Services voranzukommen . Ich habe auf MSDN nichts gefunden, das darauf hinweist, welche Datenzugriffstechnologien Microsoft als Best Practices ansieht.

Hat Microsoft eine Präferenz? Welchen Datenzugriff nutzen derzeit die meisten Menschen? Gibt es gute Gründe, bei ADO.NET classic zu bleiben und nicht zu Entity Framework zu wechseln?


Gute Frage. Eine Anmerkung: "Datenschicht" kann ein genauerer Begriff sein. "Ebenen" können auch Teile eines verteilten Systems sein, die auf separaten Boxen ausgeführt werden können.
Azheglov

1
@azheglov, "Datenschicht" war mein erster Gedanke, aber dann schaute ich mir das an und stellte fest, dass ich mit der Terminologie, die ich auf MSDN sah, übereinstimmte : msdn.microsoft.com/en-us/library/bb384398.aspx . Ich stimme zu, dass die Datenebene genauer ist.
T. Webster

Webster: danke fürs
nachschlagen

Antworten:


4

In meiner Firma verwenden wir die EF. Es ist ein schönes ORM, das für unser kleines Projekt geeignet ist. In Wirklichkeit benutzen die Leute EF oder NHibernate. Beide Frameworks sind gut. EF hat eine großartige MS-Unterstützung und Sie finden großartige Tools, die mit Visual Studio gebündelt sind. NHibernate gilt als besser als EF, aber es gibt eine größere "Lernkurve", sodass Sie mehr Zeit damit verbringen, es zu übernehmen.

Ich denke, dass, wenn Sie auf dem Ado.Net "Klassiker" sind, versuchen Sie das EF. Erstellen Sie ein einfaches Projekt und ersetzen Sie einige der DAL-Methoden. Überprüfen Sie, wie es funktioniert und wie Sie den Code verwalten / ändern können. Vergleichen Sie es mit den einfachen "SqlDataReader" -Methoden und entscheiden Sie, welche besser ist. Denken Sie daran, dass jeder Technologiewechsel einige Zeit für die Einführung benötigt, sodass Sie abwägen müssen, ob diese Änderung auf lange Sicht für Ihr Unternehmen von Vorteil ist.


5

Mein Team ist der Meinung, dass der Wechsel zu EF ein bisschen schmerzhaft ist. Das liegt nicht daran, dass EF schlecht oder nicht nützlich ist, aber der Umfang der Konvertierung unserer vorhandenen Datenebenen (ziemlich umfangreich) von stark typisierten Datensätzen aus ADO.Net Framework 2.0 auf EF ist nur eine Menge intensiver Arbeit, die nicht wirklich zunimmt uns alles. Für neue Sachen sind wir immer noch ziemlich hin und her gerissen, weil wir alle Meinungen und Ziele haben. Bei unseren Silverlight-Projekten konzentrieren wir uns ausschließlich auf EF- und RIA-Dienste, bei Webprojekten (Webforms und MVC 3) verwenden wir hauptsächlich Linq2Sql.

Wir haben mit Linq2Sql weniger Kopfschmerzen und eine schnellere Entwicklung, aber ich weiß, dass Microsoft die EF-Agenda vorantreibt (insbesondere bei WCF- und RIA-Diensten). Linq2Sql geht nirgendwo hin, aber all die neuen Spielzeuge und coolen Funktionen werden in EF konzentriert. Ich würde sagen, wenn Sie früh eine Wahl haben, wäre EF ein guter Anfang. Wenn Sie bereits in der Mitte des Stroms sind, weiß ich nicht, dass es sehr einfach sein wird, umzuschalten.


3

Entity Framework ist der bevorzugte Weg. LinqToSql wird unterstützt und gewartet, der zukünftige Entwicklungsschwerpunkt liegt jedoch auf Entity Framework. Auswahl zwischen ADO.NET Entity Framework und LINQ to SQL


und was benutzt du aktuell
T. Webster

2
Ich denke, jeder verwendet linq2sql
und

@nCdy: Während einige Mitglieder unseres Teams Linq2Sql als zu "gesprächig" eingestuft haben, sind wir alle der Meinung, dass EF automatisch zu viel unnötigen Müll erzeugt, den L2S einfach umgeht.
Joel Etherton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.