1
我得到了以下問題: 我得到了一個實體(來自EF Code First),看起來像這樣。Automapper - 如何重用對象,而不是創建新對象(此對象在列表中)
public class Movie {
public ICollection<AudioQuality> AudioQualities {get;set;}
}
public class AudioQuality {
public Guid Id{get;set;}
public int Channels{get;set;}
}
//Automapper Init:
Mapper.CreateMap<Movie, MovieDto>();
Mapper.CreateMap<MovieDto, Movie>().ForMember(dest => dest.AudioQualities,opt => opt.UseDestinationValue());
Mapper.CreateMap<VideoQuality, VideoQualityDto>();
Mapper.CreateMap<AudioQuality, AudioQaulityDto>();
Mapper.CreateMap<VideoQualityDto, VideoQuality>();
Mapper.CreateMap<AudioQaulityDto, AudioQuality>()
.ForMember(dest => dest.Movies, opt => opt.Ignore());
而且我也有一個看起來類似的DTO!
我從DTO的實體,像這樣映射:
//Get Movie from DB and than update it with the dto values
Movie movieFromDb = GetMoviesWithAllChilds().Single(mov => mov.Id == movieDto.Id);
//use update the entity from db with dto
Mapper.Map(movieDto, movieFromDb);
現在的問題是,Automapper創建一個新的AudioQuality-對象在AudioQualities每個項目。
但我希望他只是將來自DTO的AudioQuality-Objects中的值複製到實體,而不是使用DTO中的值創建新的對象。
有沒有辦法做到這一點?
僅供參考:UseDestinationValue適用於集合(因此不會複製集合)。
BR rene_r
那是什麼我做這個行:電影movieFromDb = GetMoviesWithAllChilds()單(MOV => mov.Id == movieDto.Id)。 Mapper.Map(movieDto,movieFromDb); – 2011-05-18 12:13:39