Automapper 自动映射-如何重用对象而不是创建新对象(此对象位于列表中)

Automapper 自动映射-如何重用对象而不是创建新对象(此对象位于列表中),automapper,entity-framework-4.1,Automapper,Entity Framework 4.1,我遇到了以下问题: 我得到了一个实体(首先来自EF代码),看起来像这样 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&

我遇到了以下问题: 我得到了一个实体(首先来自EF代码),看起来像这样

 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());
现在的问题是,Automapper为AudioQuality中的每个项目创建一个新的AudioQuality对象

但我希望他只是将音频质量对象的值从DTO复制到实体,而不是使用DTO的值创建新对象

有没有办法做到这一点

仅供参考:UseDestinationValue对集合有效(因此不会复制集合)


br rene_r

从上下文中获取实体,并将其作为第二个参数传递给映射器函数。更新将从源应用到目标

mapper.Map<SourceType, DestType>(source, dest);
mapper.Map(源、目标);

这就是我对这行代码所做的:Movie movieFromDb=GetMoviesWithAllChilds().Single(mov=>mov.Id==movieDto.Id);Mapper.Map(movieDto,movieFromDb);
mapper.Map<SourceType, DestType>(source, dest);