Gibt es gute Gründe, kein ORM zu verwenden?

Während meiner Ausbildung, die ich verwendet habe NHibernate für einige kleinere Projekte, die ich hauptsächlich programmiert und gestaltet auf eigene Faust. Jetzt, vor dem Start einige größere Projekt, die Diskussion aufkam, wie man design-Daten Zugriff hat und ob oder nicht, um eine ORM-Schicht. Als ich bin noch in meiner Ausbildung und mich selbst immer noch als Anfänger in der enterprise-Programmierung habe ich nicht wirklich versuchen, zu schieben, meiner Meinung nach, ist, dass die Verwendung eines Objekt-relationalen-mapper in die Datenbank Erleichterung der Entwicklung eine ganze Menge. Die anderen Programmierer im Entwicklerteam viel mehr Erfahrung als ich, so dass ich denke, ich werde nur tun, was Sie sagen. 🙂

Jedoch, ich verstehen nicht vollständig, zwei der wichtigsten Gründe für die nicht-Verwendung von NHibernate oder ein ähnliches Projekt:

  1. Kann man nur erstellen einer eigenen data-access-Objekte mit SQL-Abfragen und kopieren Sie diese Abfragen von Microsoft SQL Server Management Studio.
  2. Debugging ein ORM kann hart sein.

So, natürlich konnte ich nur auf meine Daten zugreifen Schicht mit einer Menge von SELECTs etc, aber hier vermisse ich den Vorteil von automatischen Verknüpfungen, lazy loading-proxy-Klassen und einen geringeren Wartungsaufwand, wenn eine Tabelle wird eine neue Spalte oder eine Spalte umbenannt wird. (Aktualisierung zahlreiche SELECTINSERT und UPDATE Abfragen vs. Aktualisierung der mapping-config und ggf. die Umgestaltung der business-Klassen und DTOs.)

Auch mit NHibernate, die Sie ausführen können, in unvorhergesehene Probleme, wenn Sie nicht wissen, der Rahmen sehr gut. Das könnte zum Beispiel sein, Vertrauen in die Table.hbm.xml hier legen Sie eine Zeichenfolge der Länge werden automatisch validiert. Jedoch, ich kann sich auch vorstellen, ähnliche bugs in einer "einfachen" SqlConnection-query data access layer.

Schließlich sind diejenigen Argumente, die oben erwähnt wird, wirklich ein guter Grund, nicht zu nutzen, ein ORM für eine nicht-triviale Datenbank-basierten enterprise-application? Gibt es wahrscheinlich auch andere Argumente, die Sie/ich verpasst haben könnte?

(Ich sollte wohl hinzufügen, dass ich denke, das ist wie die erste "große" .NET/C# - basierte Anwendung, die erfordert Teamarbeit. Gute Praktiken, die betrachtet werden als ziemlich normal auf Stack Overflow, wie unit testing oder continuous integration, sind nicht vorhandene hier bis jetzt.)

InformationsquelleAutor der Frage hangy | 2008-10-11

Schreibe einen Kommentar