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