AutoMapper: "Ignoriere den Rest"?
Gibt es eine Möglichkeit zu sagen, AutoMapper zu ignorieren, alle Eigenschaften außer denen, die explizit zugeordnet?
Habe ich externe DTO-Klassen, die sich wahrscheinlich ändern, von außen, und ich möchte vermeiden Sie die Angabe der jeweiligen Eigenschaft ignoriert zu werden explizit, da das hinzufügen von neuen Eigenschaften, brechen die Funktionalität (zu Ausnahmen), wenn Sie versuchen, ordnen Sie diese in eigene Objekte.
InformationsquelleAutor der Frage Igor Brejc | 2009-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine Erweiterung Methode, die ich schrieb, ignoriert alle nicht vorhandenen Eigenschaften, die auf das Ziel. Nicht sicher, ob es immer noch sinnvoll sein, die Frage ist mehr als zwei Jahre alt, aber ich lief in das gleiche Problem dass Sie eine Menge von manuellen Ignorieren Anrufe.
Verwendung:
UPDATE: Anscheinend funktioniert das nicht richtig, wenn Sie benutzerdefinierte Zuordnungen, weil er überschreibt diese. Ich denke es könnte immer noch funktionieren, falls der Anruf IgnoreAllNonExisting zuerst und dann die benutzerdefinierten Zuordnungen später.
schdr eine Lösung hat (als eine Antwort auf diese Frage), die verwendet
Mapper.GetAllTypeMaps()
um herauszufinden, welche Eigenschaften sind unsichtbar und automatisch ignorieren. Scheint wie eine robuste Lösung für mich.InformationsquelleAutor der Antwort Can Gencer
Habe ich aktualisiert, Kann Gencer die Erweiterung nicht überschreiben Sie alle vorhandenen Karten.
Verwendung:
InformationsquelleAutor der Antwort Robert Schroeder
Von dem, was ich verstanden, die Frage war, gibt es Felder, auf das Ziel, das nicht über ein zugeordnetes Feld in der Quelle, die ist, warum Sie sind Suche für Möglichkeiten zu Ignorieren diejenigen, die nicht zugeordneten Ziel-Felder.
Statt der Umsetzung und Anwendung dieser Methode die Sie könnte verwenden Sie einfach
Nun die automapper weiß, dass es muss nur überprüfen, dass alle Quell-Felder zugeordnet werden, aber nicht die andere Weise herum.
InformationsquelleAutor der Antwort Nazim Hafeez
Habe ich in der Lage, dies zu tun wie folgt:
Hinweis: ich bin mit AutoMapper v. 2.0.
InformationsquelleAutor der Antwort Yohanb
Als der AutoMapper 5.0, die
.TypeMap
Eigenschaft aufIMappingExpression
ist Weg, was bedeutet, der 4,2-Lösung nicht mehr funktioniert. Ich habe eine Lösung, die über die ursprüngliche Funktionalität, aber mit einer anderen syntax:Umsetzung:
InformationsquelleAutor der Antwort Richard
Version 5.0.0-beta-1 von AutoMapper stellt die
ForAllOtherMembers
Erweiterung Methode, so können Sie jetzt tun:Bewusst sein, dass es von Vorteil ist explizit Zuordnung der einzelnen Immobilie, wie Sie werden nie wieder Probleme der Zuordnung scheitern geräuschlos, die entstehen, wenn Sie vergessen, das zuordnen einer Eigenschaft.
Vielleicht in deinem Fall könnte es ratsam sein, alle anderen Elemente ignorieren, und fügen Sie eine
TODO
kommen Sie zurück und stellen diese explizit nach der Häufigkeit von änderungen an dieser Klasse nieder.InformationsquelleAutor der Antwort ajbeaven
Es ist schon ein paar Jahre her, seit die Frage gestellt wurde, aber diese Methode scheint sauberer zu mir, mit der aktuellen version von AutoMapper (3.2.1):
InformationsquelleAutor der Antwort Iravanchi
Für diejenigen, die mit dem nicht-statische API in der version 4.2.0 und oben, die folgende extension-Methode (gefunden hier in der
AutoMapperExtensions
Klasse) verwendet werden können:Die wichtige Sache hier ist, dass, sobald die static-API entfernt wird, wird code wie
Mapper.FindTypeMapFor
wird nicht mehr funktionieren, daher die Verwendung desexpression.TypeMap
Feld.InformationsquelleAutor der Antwort nick_w
Für Automapper 5.0, um zu überspringen, alle nicht zugeordneten Eigenschaften, die Sie gerade brauchen, setzen
.ForAllOtherMembers(x=>x.Ignore());
am Ende Ihres Profils.
Beispiel:
In diesem Fall nur die Id-Feld für die Ausgabe-Objekt wird aufgelöst, alle anderen werden übersprungen. Funktioniert wie ein Charme, scheint, wir brauchen keine trickreiche Erweiterungen mehr!
InformationsquelleAutor der Antwort framerelay
Habe ich aktualisiert, Robert Schröder die Antwort für AutoMapper 4.2. Mit non-static mapper-Konfigurationen, können wir nicht verwenden
Mapper.GetAllTypeMaps()
aber dieexpression
hat einen Verweis auf das erforderlicheTypeMap
:InformationsquelleAutor der Antwort mrmashal
Wie möchten Sie festlegen, dass bestimmte Mitglieder ignoriert? Gibt es eine Konvention, oder die Basis-Klasse oder Attribut, das Sie bewerben möchten? Sobald Sie in das Geschäft der Angabe aller Zuordnungen ausdrücklich, ich bin nicht sicher, was Wert, den Sie bekommen würde, aus AutoMapper.
InformationsquelleAutor der Antwort Jimmy Bogard
Diese scheint eine alte Frage, aber ich dachte, ich würde post auf meine Antwort für jemand anderes suchen, wie ich war.
Benutze ich ConstructUsing, objektinitialisierer, gepaart mit ForAllMembers ignorieren.e.g
InformationsquelleAutor der Antwort gm1886
Nur Informationen über das ignorieren viele Mitglieder ist dieser thread - http://groups.google.com/group/automapper-users/browse_thread/thread/9928ce9f2ffa641f . Ich denke, Sie können den trick in ProvidingCommonBaseClassConfiguration zu ignorieren, gemeinsame Eigenschaften für ähnliche Klassen.
Und es gibt keine Informationen über die "Ignorieren" - Funktion. Ich habe den code vor, und es scheint mir, dass wird sehr, sehr schwer solch eine Funktionalität. Sie können auch versuchen, einige Attribut, mark und es ignoriert, Eigenschaften und fügen Sie einige generische/common code ignorieren alle markierten Eigenschaften.
InformationsquelleAutor der Antwort zihotki
Können Sie ForAllMembers, als überschreiben nur gebraucht
wie diese
Seien Sie vorsichtig, es wird alles ignorieren, und wenn Sie nicht hinzufügen, benutzerdefinierte Zuordnung, sind Sie schon ignorieren und wird nicht funktionieren
auch, ich möchte sagen, wenn Sie unit-test für AutoMapper. Und testen Sie, dass alle Modelle mit allen Eigenschaften richtig zugeordnet, sollten Sie nicht verwenden, eine solche Erweiterung Methode
sollten Sie die schreiben ignorieren explizit
InformationsquelleAutor der Antwort zxxc
Ich weiß, das ist eine alte Frage, aber @jmoerdyk
Ihre Frage:
können Sie diese Antwort wie dies im Profil ctor
InformationsquelleAutor der Antwort j.loucao.silva
In version 3.3.1, die Sie einfach verwenden können
IgnoreAllPropertiesWithAnInaccessibleSetter()
oderIgnoreAllSourcePropertiesWithAnInaccessibleSetter()
Methoden.InformationsquelleAutor der Antwort Ivan Kochurkin