2017-02-07 3 views
1

Ich versuche DTOs zu Entitäten zuzuordnen. Als ich online suchte, bemerkte ich viele Hinweise auf AutoMapper und ebenso viele Rückmeldungen darüber, wie es nicht ein guter Weg ist, dies zu tun.DTO zu Entität zuordnen

Auch ich konnte keine neu datierten Quellen finden, eine Frage, die darüber klagt, dass es keine "neuen" Quellen gibt, ist 4 Jahre alt.

Eine der Quellen, die ich gefunden, die sehr vielversprechend aussah, war dies https://rogerjohansson.blog/2013/12/01/why-mapping-dtos-to-entities-using-automapper-and-entityframework-is-horrible/

und ich konnte es entweder arbeiten bekommen.

Also, im Grunde ist Situation so.

Ich versuche eine Integration über Bestellungen mit Hilfe von wcf. (Ein ganz anderes Fall)

Ich habe eine Bestellung dto und verwandte dto's sind Bestellposten, Kunden, Kundenadresse, Bestelladresse. Einige mehr werden später folgen.

Da dies im Wesentlichen Datenbanktabellen sind, ist die Haupttabelle "Bestellung". Es fungiert als Kopfzeile, Bestellzeile und andere sind selbsterklärend. Ich bin mir sicher, dass jeder schon einmal auf so etwas gestoßen ist.

Ich erstellte Dto's nach ihren Gegenstück-Einheiten.

Was ich tun soll, ist; Konvertieren

a) (oder als Terminologie geht, Karte?) Diese DTO zu Entities

b) Fügen Sie die Einheit DbContext und Savechanges.

Kann mir also jemand in eine gute Richtung auf die Lösung dieser Situation zeigen?

Antwort

0

Wir haben ein ähnliches Projekt wie Sie. Anstelle von WCF verwenden wir Model-Klassen von MVC, aber schließlich ist es die gleiche Idee: von einem Objekt in ein anderes zu konvertieren. Ich kann dem AutoMapper nicht widersprechen. Anfangs hatten wir die gleichen Zweifel an der Effizienz, aber letztendlich entschieden wir uns, es zu versuchen. Dann standen wir vor einigen Problemen, auf die der Artikel hinwies (besonders die Sammlungen von Elementen). Zum Glück bietet Ihnen der AutoMapper genug Flexibilität, um diese speziellen Mapping-Bedingungen zu bewältigen.

  • Für Sammlungen wir individuelle Zuordnungen verwenden, die es uns ermöglichen, zu erkennen, wenn wir neue Elemente/Elemente zu aktualisieren/Elemente
  • Für Verweise zu entfernen, befolgen wir die Regeln von Entity Framework: fügen Sie den Wert FK_Id eher als das reale Objekt.
  • Wenn aus irgendeinem Grund, Sie brauchen eine gewisse Logik auf die Abbildung hinzuzufügen, basierend auf einige Referenzschuldnern, dann verwenden wir dependencyResolver (nur bei extremen Fällen, wie wir die Idee dependencyResolver nicht mögen)

Ich denke, AutoMapper ist einfach genug, um die Grundlagen zu lernen, so dass Sie Ihre Objekte in wenigen Minuten zuordnen können. Außerdem gibt es Ihnen alle Werkzeuge für die speziellen Überlegungen.

Der Artikel, den Sie gepostet haben, erklärt, wie "Entity Framework AutoMapper nicht mag", aber es hängt mehr davon ab, wie Sie die Regeln von EF und AutoMapper befolgen. Entity Framework ist ein riesiges ORM und als solches müssen Sie einige Regeln befolgen (in einigen Fällen sehr strenge Regeln).Natürlich wird die Verwendung von AutoMapper mit den grundlegenden Beispielen einige Regeln brechen, aber sobald Sie sich daran gewöhnen, ist es wirklich einfach, die Regeln zu befolgen.

Zusammenfassend: AutoMapper spart Ihnen eine Menge Zeit, die Sie in die Anpassung einiger Konfigurationen investieren können. Wenn nicht, müssen Sie linq Projektionen verwenden, die in den meisten Fällen viel mehr Zeit benötigen. Beispiel: Das Erfassungsproblem wird gelöst, indem das Hinzufügen/Bearbeiten/Löschen anhand von IDs erkannt wird, die auch mit AutoMapper über benutzerdefinierte Zuordner verarbeitet werden können.

Verwandte Themen