BESTPRACTICE: Vor- und Nachteile für die Verwendung von Automapper oder LINQ (LINQ an Objekte) zum Zuordnen zwischen einem Domänenmodell und einem Präsentationsmodell

StackOverflow https://stackoverflow.com/questions/2636575

Frage

Was denkst du? Wie kartieren Sie zwischen Ihrem Domain und Ihrem Präsentationsmodell?

War es hilfreich?

Lösung

Teil einer Antwort von einer Antwort von Eine weitere Automapper -Frage:

Wenn Sie ein Objekt mit einem Typ haben und die Eigenschaften eines Objekts eines anderen Typs mithilfe von Eigenschaften aus dem ersten Typ bevölkern möchten, haben Sie zwei Möglichkeiten:

  1. Schreiben Sie manuell Code, um eine solche Zuordnung durchzuführen.
  2. Verwenden Sie ein Tool, das dies automatisch für Sie verarbeitet.

Automapper ist ein Beispiel von 2.

LINQ zu Objekten ist ein Beispiel für 1-es ist zufällig etwas weniger schmerzhaft als das Schreiben von Vanila-Objekt-zu-Objekt-Mapping-Code.

In Bezug auf Vor- und Nachteile:

  • Automapper sollte die Codemenge, die Sie schreiben müssen, im Vergleich zu LINQ erheblich reduzieren, da die Konventionen zur Bestimmung von Standardzuordnungen verwendet werden. Mit LINQ müssten diese Standard -Zuordnungen definiert werden.

  • Verwenden von LINQ Es ist erforderlich, Zuordnungen in beide Richtungen zu definieren - Automapper sollte in der Lage sein, dies automatisch auszuarbeiten, wenn Konventionen verwendet werden.

  • Wie bei allen Drittanbietern wird die Verwendung von Automapper eine andere Abhängigkeit einführen und eine kleine Lernkurve erfordern (beachten Sie, dass es eine Lernkurve für diejenigen Entwickler gibt, die auch noch LINQ verwendet haben).

Hinweis, Automapper kann in Verbindung mit LINQ (und linq2SQL) - verwendet werden - Noch ein Automapper -Beitrag Das erklärt einige der feineren Punkte.

Andere Tipps

Es gibt auch Nachteile bei der Verwendung eines Automappers, und einige dieser Nachteile gelten im Allgemeinen für die Programmierung durch Konvention (im Gegensatz zum expliziten Schreiben von Code).

Sagen Sie, Sie haben zwei C# -Klasses -

namespace MyDtoNamespace {
    public class MyClass {
        public int Id { get; set; }
}}

namespace MyBusinessLayerNamespace {
    public class MyClass {
        public int Id { get; set; }
}}

Ein Automapper wird zwischen diesen beiden Klassen mit wenig explizitem Konfiguration zugeordnet.

Aber später, beispielsweise ein Entwickler betrachtet die Umbenennung eines dieser ID -Eigenschaften in etwas anderes EG

namespace MyBusinessLayerNamespace {
    public class MyClass {
        public int MyNewIdentifierVariableName { get; set; }
}}

Ich suche sorgfältig nach Referenzen in Visual Studio und betrachte die Auswirkungen der Umbenennung dieser Referenzen - aber weil mydtonamespace.myclass.id nicht explizit auf MyBusinessLayernameSpace.myclass.id verweist, sehe ich es nie.

Wenn Visual Studio oder ein anderes Tool für mich in der Lösung automatisch alle Voraussetzungen der Variablen umbenannt, bricht die Automapper -Mapping.

Ich kann das nur zur Laufzeit herausfinden, es gibt kein Kompilierungszeitproblem. Im Idealfall habe ich Unit -Tests, um meine Mapping -Funktionen zu überprüfen, wie ich hoffe, aber das Potenzial für Laufzeitfehler während des Refactorings ist ein guter Grund, explizite Mapping -Code zu schreiben.

Ich argumentiere sicherlich nicht, um Automapper insgesamt zu vermeiden, und stelle nur fest, dass ein großes Problem bei der Programmierung durch Konvention.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top