2017-09-13 1 views
0

Ich habe ein Automapper-Profil und während ich mit einem Senior-Entwickler arbeitete, gab er mir einen Zeiger, um eine Karte für ein IEnumerable zu erstellen, ich habe etwas verschlüsselt, aber jetzt stecke ich fest.CreateMap für IEnumerable

Ich habe versucht, diese

CreateMap<IEnumerable<BusinessInfo>, IEnumerable<AdminViewModel.Account>>().ForAllMembers(i => i.Ignore()); 
CreateMap<IEnumerable<BusinessInfo>, IEnumerable<AdminViewModel.Account>>() 
       .ForMember(i => i.COMPANY, opt => opt.MapFrom(p => p.Company)) 

aber Firma ist fehlerhaft, weil es keine Definition für Unternehmen enthalten ... Ich glaube, ich bin etwas fehlt, aber ich bin nicht sicher, was es ist.

+0

Sie würden typischerweise eine Karte für die einzelnen Modelle nur definieren, nicht die [Sammlung von Modellen] (https: // GitHub. com/AutoMapper/AutoMapper/wiki/Lists-and-arrays) 'CreateMap ()'. AutoMapper wäre dann in der Lage, die Sammlungen abzubilden. Es wäre hilfreich, die Klassen zu sehen, die Sie zuordnen möchten. – Jasen

Antwort

1

Warum mappen Sie IEnumerable<Type>? Der Grund, warum es keine Definition von Company enthält, weil es eine Sammlung ist.

Sie könnten nur für BusinessInfo und AdminViewModel.Account Mapping tun.

Mapper.CreateMap<BusinessInfo, AdminViewModel.Account>()... // do your usual or w/e custom mapping you want. 

Dann würden Sie nur etwas tun, wie ...

var adminAccountViewModel = Mapper.Map<IEnumerable<BusinessInfo>, IEnumerable<AdminViewModel.Account>>(businessInfo); 
+0

Nun, so wollte der leitende Entwickler das machen. Es ist eine Ergebnisseite. Ich werde bald mit dem College anfangen, also weiß ich nicht, warum er will, dass ich es so mache, oder sogar wirklich ... was es bedeutet ... –

+0

@String_Chez Nun, ja, wenn du dir das zweite Snippet ansiehst , die eine 'Sammlung' zurückgibt. Es macht, was Sie tun müssen. – 12seconds

+0

Sie würden also das adminAccountViewModel im Controller verwenden? Woran schließt sich (businessinfo) an? –

Verwandte Themen