繁体   English   中英

自动映射器:映射到现有的嵌套复杂属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM