2016-07-26 8 views
4

Ich habe alles gelesen, was ich online zu diesem Thema finden konnte, aber nichts hilft. Hier ist mein Code:Automapper 5.0.2 - Fehlende Typ Map-Konfiguration oder nicht unterstützte Zuordnung

Mapper.Initialize(cfg => 
     { 
      cfg.CreateMap<User, UserListViewModel>() 
      .ForMember("RoleNames", c => c.Ignore()) 
      .ForMember("CostCentreNames", c => c.Ignore()) 
      .ForMember("RollupGroupNames", c => c.Ignore()) 
      .ForMember(c => c.CostCentres, m => m.MapFrom(d => d.DetailCostCentres)) 
      ; 
     }); 

     Mapper.Initialize(cfg => 
     { 
      cfg.CreateMap<CostCentre, CostCentreListViewModel>(); 

     }); 

var users = _repo.AllIncluding(u => u.Roles, u=>u.CostCentres).OrderBy(u => u.UserName).ToList(); 
var model = Mapper.Map<List<User>, List<UserListViewModel>>(users); 

Mapper.Map gibt mir den Fehler:

Missing type map configuration or unsupported mapping.

Mapping types:
User -> UserListViewModel
Model.Models.User -> Model.ViewModels.UserListViewModel
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: AutoMapper.AutoMapperMappingException: Missing type map configuration or unsupported mapping.

Mapping types:
User -> UserListViewModel
Model.Models.User -> Model.ViewModels.UserListViewModel

Source Error:

Line 45:
Line 46: var users = _repo.AllIncluding(u => u.Roles, u=>u.CostCentres).OrderBy(u => u.UserName).ToList();
Line 47: var model = Mapper.Map, List>(users);
Line 48: return model;
Line 49: }

Antwort

5

Sie tun können, nur ein Mapper.Initialize Aufruf:

Mapper.Initialize(cfg => 
     { 
      cfg.CreateMap<User, UserListViewModel>() 
      .ForMember("RoleNames", c => c.Ignore()) 
      .ForMember("CostCentreNames", c => c.Ignore()) 
      .ForMember("RollupGroupNames", c => c.Ignore()) 
      .ForMember(c => c.CostCentres, m => m.MapFrom(d => d.DetailCostCentres)); 
      cfg.CreateMap<CostCentre, CostCentreListViewModel>(); 
     }); 
+0

Vielen Dank für Ihre Antwort. Ich habe das tatsächlich herausgefunden, aber es hat mein Problem nicht gelöst. Ich habe Automapper v2 auf v5 aktualisiert, und es mussten einige Codeänderungen vorgenommen werden. in meinem Fall könnte es nicht automatisch die Sammlungen innerhalb des Objekts behandeln. Ich musste eine Codezeile hinzufügen, um das zu spezifizieren: – Mao

+0

Danke! Das hat mich den ganzen Morgen verrückt gemacht ... Wir hatten mehrere Mapper.Initialize Instanzen und sobald wir sie zu einem kombiniert haben, mit Profilen, hat alles funktioniert. –

0

Vielen Dank für Ihre Antwort. Ich habe das tatsächlich herausgefunden, aber es hat mein Problem nicht gelöst. Ich habe Automapper v2 auf v5 aktualisiert, und es mussten einige Codeänderungen vorgenommen werden. in meinem Fall könnte es nicht automatisch die Sammlungen innerhalb des Objekts behandeln. Ich musste eine Zeile Code hinzufügen, um Folgendes anzugeben:

Mapper.Initialize(cfg => 
     { 
      cfg.CreateMap<User, UserListViewModel>() 
      .ForMember("RoleNames", c => c.Ignore()) 
      .ForMember("CostCentreNames", c => c.Ignore()) 
      .ForMember("RollupGroupNames", c => c.Ignore()) 
      .ForMember(c => c.CostCentres, m => m.MapFrom(d => d.DetailCostCentres)); 
      cfg.CreateMap(typeof(Role), typeof(RoleViewModel)); 
      cfg.CreateMap(typeof(CostCentre), typeof(CostCentreListViewModel)); 
     }); 
Verwandte Themen