8 Stimmen

Sollte ich mit LINQ To SQL beginnen?

Derzeit verwende ich NetTiers, um meine Datenzugriffsschicht und Dienstschicht zu generieren. Ich verwende NetTiers seit über 2 Jahren und habe es als sehr nützlich empfunden. Irgendwann muss ich mich mit LINQ befassen, daher sind meine Fragen...

  1. Ist schon jemand von NetTiers zu LINQ To SQL gewechselt?
  2. War diese Umstellung eine gute oder schlechte Sache?
  3. Gibt es etwas, das ich beachten sollte?
  4. Würden Sie diesen Schalter empfehlen?

Grundsätzlich würde ich jeden Gedanken begrüßen .

0voto

Chris Conway Punkte 15867

Unser Team hat früher NetTiers verwendet und fand es sehr nützlich. ABER... je mehr wir es benutzten, desto mehr Kopfschmerzen und Probleme fanden wir damit. Wenn man zum Beispiel eine Änderung an der Datenbank vornimmt, muss man die DAL mit CodeSmith neu generieren, was sehr aufwändig ist:

  • Neugenerierung von Tausenden von Codezeilen in 3 verschiedenen Projekten
  • Hunderte von gespeicherten Prozeduren neu zu generieren

Vielleicht gibt es andere Möglichkeiten, aber wir mussten es so machen. Die Neugenerierung des Quellcodes war in Ordnung, beängstigend, aber in Ordnung. Das eigentliche Problem kam mit den gespeicherten Prozeduren. Unbenutzte Stored Procedures wurden nicht bereinigt. Wenn man also eine Tabelle aus dem Schema entfernte und die DAL neu generierte, wurden die Stored Procedures für diese Tabelle nicht entfernt. Außerdem wurde dies zu einem ziemlichen Problem für Datenbankänderungsskripte, bei denen wir die alte Datenbankstruktur mit der neuen vergleichen und ein Änderungsskript erstellen mussten, um Client-Installationen zu aktualisieren. Dieses Skript konnte mehrere zehntausend Zeilen SQL-Code umfassen, und wenn bei seiner Ausführung ein Problem auftrat, was immer der Fall war, war es ziemlich mühsam, es zu beheben.

Dann ging mir ein Licht auf: NHibernate als ORM. Es hat sicherlich eine Anlaufzeit, aber es ist es wert. Es gibt eine Menge Unterstützung dafür, wenn Sie also etwas brauchen, wurde es höchstwahrscheinlich schon einmal gemacht. Es ist extrem flexibel und erlaubt es Ihnen, jeden Aspekt zu kontrollieren und noch einiges mehr. Außerdem wird es immer einfacher, es zu benutzen. Fluent Nhibernate ist eine großartige Möglichkeit, die benötigten XML-Mapping-Dateien loszuwerden, und NHibernate Profiler bietet eine hervorragende Schnittstelle, um zu sehen, was hinter den Kulissen geschieht, um die Effizienz zu steigern und Redundanzen zu beseitigen.

Der Wechsel von NetTiers zu NHibernate war schmerzhaft, aber auf eine gute Art und Weise. Sie hat uns dazu gezwungen, eine bessere Architektur zu entwickeln und die funktionalen Anforderungen neu zu bewerten. NetTiers bot tonnenweise Datenzugriffscode, wie z.B. "get this entity by its id", "get this other entity by its foreign key", "get a tlist and vlist of this and that", aber das meiste davon war unnötig und ungenutzt. NHibernate mit einem generischen Repository und benutzerdefinierten Repositories nur dort, wo sie benötigt werden, reduzierte tonnenweise ungenutzten Code und verbesserte die Lesbarkeit und Zuverlässigkeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X