2016-04-12 2 views
5

Uso AutoMapper con i profili e funziona molto bene. Recentemente, ho trovato la configurazione di CreateMissingTypeMaps e, se funziona come ho capito, renderà il mio sviluppo più veloce, una volta che non sarà necessario creare associazioni semplici.AutoMapper con CreateMissingTypeMaps e AddProfile

Ho aggiunto alla mia configurazione un profilo con AddProfile e, successivamente, ho eseguito la configurazione di CreateMissingTypeMaps.

Es:

------- Creazione di configurazione ------------

var config = new MapperConfiguration(cfg => 
{ 
    cfg.AddProfile<PersonServiceMapperProfile>(); 
    cfg.CreateMissingTypeMaps = true; 
}); 

------- Dentro il mio PersonServiceMapperProfile - ----

internal class PersonServiceMapperProfile : Profile 
{ 
    protected override void Configure() 
    { 
     CreateMap<PersonData, ProfileViewModel>().ConvertUsing<PersonDataToProfileViewModel>(); 
    } 
} 

Quando la configurazione di CreateMissingTypeMaps è impostata su true, il profilo non funziona più. La mia mappatura personalizzata non viene chiamata.

Come risolvere questa domanda?

+0

Sta succedendo ancora? – Brad

+1

@Brad Ho appena aggiornato dalla v3.3 alla v6, e mi sta succedendo. Sto cercando di capire come mi allontani dall'utilizzo di DynamicMap in così tanti posti che non ho bisogno di preoccuparmi di una CreateMap (avrei letteralmente 100 o meno chiamate vuote a CreateMap). Pubblicherò di nuovo qui quando lo capisco ... – pbarranis

risposta

0

Mi sono imbattuto in questo stesso problema dopo l'aggiornamento da automapper 3-6 di recente, e ho trovato un problema in GitHub per automapper che ha rivelato la soluzione a questo problema:

L'AddConditionalObjectMapper() è il modo di vai così i tuoi tipi di anon vengono mappati ma non sovrascrivono i tuoi mapping predefiniti. Non utilizzarlo con CreateMissingtypeMaps, perché sovrascrive la condizione. CreateMissingTypeMaps basicly è AddConditionalObjectMapper(). Where ((s, d) => true);

Source: Issue 2008, TylerCarlson1

Tuttavia, questo non dovrebbe essere usato per "semplici" mappature. La funzione CreateMissingTypeMaps è destinata esclusivamente all'utilizzo quando i mapping non sono noti fino al momento della compilazione, ad esempio con EF Dynamic Proxies. Il motivo per cui non dovrebbe essere usato per tipi noti è perché le funzionalità di CreateMap e di compilazione consentono di testare rapidamente e prevenire mappature fallite a causa di errori di battitura, nomi non corrispondenti, proprietà nuove o rimosse, ecc. Ecc. È un grosso problema usare il funzione di compilazione come previsto, quindi sfruttala al meglio.