Entity Framework + AutoMapper (Entity für DTO und DTO für Entity)

automapper c# dto entity-framework

Frage

Ich habe Probleme mit EF mit AutoMapper. = /

zum Beispiel :

Ich habe 2 verwandte Entitäten (Kunden und Bestellungen) und sie sind DTO-Klassen:


class CustomerDTO
{
   public string CustomerID {get;set;}
   public string CustomerName {get;set;}
   public IList< OrderDTO > Orders {get;set;}
}

class OrderDTO { public string OrderID {get;set;} public string OrderDetails {get;set;} public CustomerDTO Customers {get;set;} }

//when mapping Entity to DTO the code works Customers cust = getCustomer(id); Mapper.CreateMap< Customers, CustomerDTO >(); Mapper.CreateMap< Orders, OrderDTO >(); CustomerDTO custDTO = Mapper.Map(cust);

//but when i try to map back from DTO to Entity it fails with AutoMapperMappingException. Mapper.Reset(); Mapper.CreateMap< CustomerDTO , Customers >(); Mapper.CreateMap< OrderDTO , Orders >(); Customers customerModel = Mapper.Map< CustomerDTO ,Customers >(custDTO); // exception is thrown here

Mache ich etwas falsch?

Danke im Voraus !

Beliebte Antwort

Das Problem, das ich hatte, stand im Zusammenhang mit Aktualisierungen von EntityCollection-Referenzen. AutoMapper erstellt eine neue Instanz der Beziehung, wenn die Zuordnung von der DTO zur Entität erfolgt, und dies stimmt der EF nicht zu.

Mein Problem wurde gelöst, indem AutoMapper so konfiguriert wurde, dass der Zielwert für meine EntityCollection-Eigenschaften verwendet wird. In Ihrem Fall:

Mapper.CreateMap< CustomerDTO , Customers >().ForMember(c => c.Orders, o => o.UseDestinationValue());

Auf diese Weise erstellt AM keine neue EntityCollection-Instanz und verwendet diejenige, die mit der ursprünglichen Entität Customer geliefert wurde.

Ich arbeite immer noch an einer Möglichkeit, dies zu automatisieren, aber jetzt löst es mein Problem.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum