2016-04-06 13 views
0

Ich verwende AutoMapper 4.2.1.0 und ich habe meine Karten wie folgt definiert.Automapper funktioniert nicht wie es sollte

var config = new MapperConfiguration(cfg => 
     { 
      cfg.CreateMap<Order, OrderDTO>(); 
      cfg.CreateMap<Order_Detail, Order_DetailDTO>(); 
     }); 
MapperConfig = config; 

Dann benutze ich MapperConfig in meinem Code, dies zu tun:

var builder = MapperConfig.ExpressionBuilder; 
return ((IQueryable<TEntity>) property.GetValue(_db, null)).ProjectTo<TDto>(builder); 

aber wenn TEntity ist Order und TDto ist OrderDto ich eine Ausnahme bin immer das sagt:

Fehlende Karte von Bestellung zu BestellungDTO. Erstellen mit Mapper.CreateMap

Was habe ich falsch gemacht?

Antwort

1

OK. Ich habe es bekam: Statt:

return ((IQueryable<TEntity>) property.GetValue(_db, null)).ProjectTo<TDto>(builder); 

soll ich schreiben:

return ((IQueryable<TEntity>) property.GetValue(_db, null)).ProjectTo<TDto>(MapperConfig); 

Vorbei an der Config-Objekt selbst in ProjectTo.

0

Sie müssen einen Mapper mit dem MapperConfiguration-Objekt erstellen.

var config = new MapperConfiguration(cfg => 
{ 
    cfg.CreateMap<Order, OrderDTO>(); 
    cfg.CreateMap<Order_Detail, Order_DetailDTO>(); 
}); 

// Make sure mappings are properly configured (you can try-catch this). 
config.AssertConfigurationIsValid(); 

// Create a mapper to use for auto mapping. 
var mapper = config.CreateMapper(); 

var orderObject = new Order { /* stuff */ }; 
var orderDto = mapper.Map<OrderDTO>(orderObject); 
+0

Ich möchte 'ProjectTo' verwenden, also muss ich ExpressionBuilder verwenden, wie es in diesem Artikel erwähnt wird: https://losechies.com/jimmybogard/2016/01/21/removing-the-static-api-from- Automatiker / – Beatles1692

Verwandte Themen