Ich habe mich mit sogenannten "Mikro-ORMs" wie Dapper beschäftigt und (in geringerem Maße, da es sich auf .NET 4.0 stützt) Massive, da diese bei der Arbeit möglicherweise einfacher zu implementieren sind als ein vollwertiges ORM seit unserem aktuellen System ist in hohem Maße auf gespeicherte Prozeduren angewiesen und würde ein erhebliches Refactoring erfordern, um mit einem ORM wie NHibernate oder EF zu arbeiten. Was ist der Vorteil einer dieser Funktionen gegenüber einem ORM mit vollem Funktionsumfang? Es scheint , als nur eine dünne Schicht um eine Datenbank - Verbindung , dass Sie noch Kräfte roh SQL zu schreiben - vielleicht bin ich falsch , aber ich war immer der Grund für ORMs gesagt in erster Linie ist , so dass Sie nicht haben , SQL zu schreiben, es könnte automatisch generiert werden; Insbesondere für Verknüpfungen mit mehreren Tabellen und das Zuordnen von Beziehungen zwischen Tabellen, die in reinem SQL nur schwer möglich, mit einem ORM jedoch trivial sind.
Ein Beispiel für Dapper:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
Wie unterscheidet sich das von der Verwendung einer handgehaltenen ADO.NET-Datenschicht, mit der Ausnahme, dass Sie den Befehl nicht schreiben müssen, die Parameter festlegen und die Entität vermutlich mit einem Builder zurückmappen. Sie könnten sogar einen Aufruf einer gespeicherten Prozedur als SQL-Zeichenfolge verwenden.
Gibt es andere greifbare Vorteile, die ich hier vermisse, wo die Verwendung eines Mikro-ORM sinnvoll ist? Ich sehe nicht wirklich, wie es etwas über die "alte" Art der Verwendung von ADO.NET spart, außer vielleicht ein paar Zeilen Code - Sie müssen noch schreiben, um herauszufinden, welches SQL Sie ausführen müssen (was haarig werden kann) und Sie müssen noch Beziehungen zwischen Tabellen abbilden (der Teil, bei dem IMHO ORMs am meisten helfen).
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
und dann,dog.First().Age
um auf Eigenschaften zuzugreifen.Antworten:
Leistungen:
Das ist es, um ehrlich zu sein. Sie haben einen sehr leichten Wrapper für Ihre SQL-Verbindungen, der die Objektkonvertierung für Sie erledigt. Sie können die Abfragen natürlich optimieren, ohne sich mit automatisch generiertem SQL befassen zu müssen.
Nachteile:
Sie haben ihren Platz, und sie sind ein sehr effektives Tool, das Entwicklern bei der Interaktion mit der Datenbank einen Teil der "Eselarbeit" abnehmen kann, in Wirklichkeit können sie jedoch in großem Maßstab einfach nicht den Platz eines vollständigen ORM einnehmen System für Anfragen, die nicht leistungskritisch sind, einfach wegen der erhöhten Wartungskosten.
Wenn Sie Probleme mit der Leistung von DB-Abfragen haben, empfehlen wir, diese Zuordnungsframeworks nur mit gespeicherten Prozeduren zu verwenden, um während der Kompilierung anzuzeigen, ob Ihre SQL gültig ist (zuzüglich der zusätzlichen Leistungsvorteile). .
quelle
Auf der Webseite von micro ORM PetaPoco erklärt er einige Vorteile mit anderen ORM. um mehr zu erklären
quelle
Ich glaube, das ist der Hauptvorteil eines Mikro-ORM. Um die anderen Vorteile eines ORM zu erzielen, müsste man einen vollwertigen verwenden. Dies und der Code ist relativ klein. Wenn Sie ihn also anpassen müssen, ist dies einfacher.
quelle