Was ist Automapper für? Wie wird es mir helfen, mit meiner Domäne und Controller-Schicht (asp.net mvc)Was ist Automapper für?
Antwort
Vielleicht ein Beispiel wird hier helfen ...
Angenommen, Sie haben eine schön-normalisierte Datenbank-Schema wie folgt aus:
Orders (OrderID, CustomerID, OrderDate) Customers (CustomerID, Name) OrderDetails (OrderDetID, OrderID, ProductID, Qty) Products (ProductID, ProductName, UnitPrice)
Und lassen Sie uns sagen, Sie verwenden einen schönen O/R-Mapper, dass Sie wieder ein gut organisiertes Domain-Modell reicht:
OrderDetail +--ID +--Order |--+--Date |--+--Customer |-----+--ID |-----+--Name +--Product |--+--ID |--+--Name |--+--UnitPrice +--Qty
Jetzt sind Sie eine Anforderung gegeben alles anzuzeigen, die in th bestellt worden ist e letzten Monat. Sie wollen, dass diese zu einem flachen Gitter binden, so dass Sie pflichtschuldigst eine flache Klasse schreiben zu binden:
public class OrderDetailDto
{
public int ID { get; set; }
public DateTime OrderDate { get; set; }
public int OrderCustomerID { get; set; }
public string OrderCustomerName { get; set; }
public int ProductID { get; set; }
public string ProductName { get; set; }
public Decimal ProductUnitPrice { get; set; }
public int Qty { get; set; }
public Decimal TotalPrice
{
get { return ProductUnitPrice * Qty; }
}
}
Das ziemlich schmerzlos waren so weit, aber was nun? Wie können wir eine Reihe von OrderDetail
s in eine Reihe von OrderDetailDto
s für die Datenbindung drehen?
Sie könnten einen Konstruktor auf OrderDto
, die eine OrderDetail
dauert, und schreiben Sie eine große Unordnung von Mapping-Code. Oder Sie haben möglicherweise eine statische Konvertierungsklasse irgendwo. Oder Sie könnten AutoMapper verwenden und stattdessen diesen Code schreiben:
Dort. Wir haben gerade etwas genommen, was sonst ein widerliches Durcheinander von sinnlosem Mapping-Code gewesen wäre, und es in drei Zeilen reduziert (wirklich nur zwei für das tatsächliche Mapping).
Kann das den Zweck erklären?
Fast alles. Wenn du mehr über die Macht von Automapper hinzufügst, bin ich mir sicher, dass die Leute ... –
Wenn Sie ein Objekt eines Typs haben und Sie die Eigenschaften eines Objekts eines anderen Typs mit Eigenschaften aus dem ersten Typ, Sie füllen möchten habe zwei Möglichkeiten:
- Manuell Code schreiben, um solch ein Mapping zu machen.
- Verwenden Sie ein Tool, das dies automatisch für Sie behandelt.
AutoMapper ist ein Beispiel 2.
Die häufigste Verwendung ist Modellen in eine Datentransferobjekte abzuflachen (oder im Allgemeinen über Mapping Schichtgrenzen). Was bei AutoMapper sehr angenehm ist, ist, dass Sie für allgemeine Szenarien keine Konfiguration vornehmen müssen (convention over configuration).
Objekte zwischen Ebenen zuordnen. Gutes Beispiel: Here
- 1. AutoMapper: Was ist der Unterschied zwischen ForMember und ForSourceMember?
- 2. Automapper für Java
- 3. AutoMapper MapFrom funktioniert für Berechnungen?
- 4. Was ist der beste Weg, um eine AutoMappingOverride für eine Schnittstelle in FluentNHibernate AutoMapper
- 5. AutoMapper Initialize
- 6. Migrieren zu Automapper 4.2.1 von Automapper 2.2.1
- 7. Automapper Mapper.DynamicMap (....)
- 8. Inject AutoMapper
- 9. Rewrite-Code für AutoMapper v5.0 auf v4.0
- 10. AutoMapper Problem
- 11. Was ist für Python was "explodieren" ist für PHP?
- 12. Automapper sagt Mapper.Map ist veraltet, globale Zuordnungen?
- 13. Was ist stripslashes für?
- 14. Was ist app.config für?
- 15. Für was ist __gxx_personality_v0?
- 16. Was ist NuGetPackageImportStamp für?
- 17. Was ist ApplicationDomain.domainMemory für?
- 18. Was ist .pydistutils.cfg für?
- 19. Was ist xcLanguageSpecificationIdentifier für?
- 20. Automapper benutzerdefinierte Konverter für offene generische
- 21. AutoMapper Konfiguration Ortszeit für alle Datetime-Eigenschaften
- 22. Unterschiedliche Zuordnungsregeln für gleiche Entitätstypen in AutoMapper
- 23. Automapper Convention
- 24. Automapper -AutoMapper.AutoMapperMappingException
- 25. Automapper Leistung
- 26. AutoMapper automatisch erstellen createMap
- 27. Automapper: Map Geschützte Eigenschaft
- 28. Anonyme Funktion mit AutoMapper
- 29. Automapper Konfiguration Setup
- 30. Automapper: Ignore bei Bedingung
Mögliche doppelte/verwandte Frage (aber ein gutes Beispiel enthält) ist –
Hier ist eine gute Erklärung: http: // www. kunal-chowdhury.com/2013/01/what-is-automapper-and-how-to-map-objects.html – JoshYates1980