[英]Automapper: Mapping onto existing nested complex property
是否可以在创建地图时告诉AutoMapper映射到嵌套属性的现有实例?
假设我有一堂课:
public class SomeClass
{
public int Id {get; set;}
public Complex Settings {get; set;}
}
public class Complex
{
public int Id { get; set;}
public string SomeText { get; set;}
}
我想创建从SomeClass到SomeClass的映射,并使用它将属性映射到现有实例。
Mapper.CreateMap<SomeClass, SomeClass>()
.ForMember(src => src.Settings, opts => opts.MapFrom(src => Mapper.Map<Complex, Complex>(src));
Mapper.CreateMap<Complex, Complex>();
Mapper.Map<SomeClass, SomeClass>(a, b);
其中a和b是SomeClass的实例。 问题在于此解决方案将属性映射到现有实例,但是创建了Complex的新实例,而不是将a.Complex映射到现有的b.Complex。
是否可以配置AutoMapper以获得所需的行为?
(这使我在使用Entity Framework时遇到很多问题)。
我自己弄清楚了。 解决方案非常简单。
正确的地图创建如下所示:
Mapper.CreateMap<SomeClass, SomeClass>()
.ForMember(src => src.Settings, opts => opts.Ignore())
.AfterMap((src, dst) => Mapper.Map<TestSettings,TestSettings>(src.TestSettings, dst.TestSettings);
Mapper.CreateMap<Complex, Complex>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.