【问题标题】:Automapper: Mapping onto existing nested complex propertyAutomapper:映射到现有的嵌套复杂属性
【发布时间】:2016-08-25 16:46:09
【问题描述】:

是否可以在地图创建过程中告诉 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 以获得所需的行为?

(它给我带来了很多关于实体框架的问题)。

【问题讨论】:

标签: c# .net automapper


【解决方案1】:

我自己想通了。解决方法很简单。

正确的地图创建如下所示:

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>();

【讨论】:

    猜你喜欢
    • 2020-04-03
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多