2014-11-12 17 views
5

Sto utilizzando Automapper per copiare le proprietà di un oggetto su un altro e in seguito verrà aggiornato nel database utilizzando EF.Ignora una proprietà in AutoMapper?

Domanda è come dire ad Automapper di copiare ogni proprietà ma di ignorare una particolare proprietà (in questo caso sarà Id). Sono nuovo di AutoMapper e ho appena fatto questo codice. Non ho altre configurazioni o l'utilizzo di AutoMap nel progetto.

Mapper.Map(lead, existingLead); 

Ho scaricato forma automapper qui https://github.com/AutoMapper/AutoMapper

+1

possibile duplicato di [automapper come ignorare la proprietà nell'elemento di origine che non esiste nella destinazione] (http://stackoverflow.com/questions/4052579/automapper-how-to-ignore-property-in-source-item -that-does-exist-exist-in-destinat) – Shiva

risposta

6

Sul Mapper.CreateMap<Type1, Type2>() è possibile utilizzare

.ForSourceMember(x => x.Id, opt => opt.Ignore()) 

o

.ForMember(x => x.Id, opt => opt.Ignore()) 
+0

scusa dove posso trovare Mapper.CreateMap? Ho appena installato utilizzando i pacchetti Nuget e la riga di codice che ho aggiunto in questione è solo la linea che ho fatto. – user576510

+1

@ user576510 Dovrebbe essere appena sotto lo spazio dei nomi AutoMapper. Basta crearlo sulla propria riga (seguito da .ForMember() o .ForSourceMember() a seconda di come si sta vincolando) e si dovrebbe andare bene :) – John

+0

@John Perché devo usare "Ignora"? Le proprietà che mancano in un tipo di destinazione otterranno il loro valore predefinito. –

1

Io uso questo metodo di estensione:

public static IMappingExpression<TSource, TDestination> IgnoreMember<TSource, TDestination>(
    this IMappingExpression<TSource, TDestination> map, Expression<Func<TDestination, object>> selector) 
{ 
    map.ForMember(selector, config => config.Ignore()); 
    return map; 
} 

e lo uso come questo

Mapper.CreateMap<MyType1, MyType2>().IgnoreMember(m => m.PropertyName); 

Speranza che aiuta.

+0

grazie, sono nuovo di automapper, devo aggiungere alcune configurazioni nel file di configurazione? Ho solo fatto una riga di codice che cito in qeustion. Dovrei usare Mapper.CreateMap? – user576510

+0

Quando la tua app si inizializza, devi chiamare un metodo Initialize che imposterà tutti i mapping delle tue classi. Consulta questa guida per saperne di più su Automapper https://github.com/AutoMapper/AutoMapper/wiki/Getting-started. –

Problemi correlati