2017-08-03 61 views
0

在地图回调后,我有两种看起来像这样的Automapper之前/我使用<em>ASP.NET核心</em>和<em>Automapper 6.1.0</em>,</p> <p>映射

public class ExampleDTO 
{ 
    public Guid Id { get; set; } 
    public ProviderDTO Provider { get; set; } 
} 


public class Example 
{ 
    public Guid Id { get; set; } 
    public Guid Provider { get; set; } 
} 

ProviderDTO类(在这种情况下是相关的)

public class ProviderDTO 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
} 

AutoMapper配置看起来像这样:

CreateMap<Example, ExampleDTO>().ForMember(x => x.Provider, opt => opt.Ignore()); 

CreateMap<ExampleDTO, Example>().ForMember(dest => dest.Provider, 
              opt => opt.MapFrom(src => src.Provider.Id)); 

当我从实施例映射到ExampleDTO,我想通过对ProviderDTO类型的值。

我试过这样的事情。

_mapper.Map<ExampleDTO>(example, opt => opt.AfterMap((src, dest) => dest.Provider = myProvider));

我得到这个

'object' does not contain a defenition for 'Provider' and no extension method

这是可以实现的?如果是的话,我做错了什么?

+0

提供者是一个对象(ProviderDTO)或GUID?显示提供者类... – Ardit

+0

@Ardit这就是我想要映射的,当目的地是DTO映射一个对象,否则映射一个GUID –

+0

@Ardit我已经添加了'ProviderDTO'类,它是irelevant –

回答

2

随着AutoMapper,可能需要提供在源和目的地既类型,如:

_mapper.Map<Example, ExampleDTO>(example, opt => { 
    opt.AfterMap((src, dest) => dest.Provider = myProvider)) 
});