使用AutoMapper映射时动态忽略属性

时间:2019-03-06 19:50:00

标签: c# .net-core automapper

我在.net核心应用程序中使用AutoMapper从Nhibernate实体创建DTO,以JSON形式发送到客户端。但是,有些要求我需要省略实体上的某些属性。例如,假设我有以下课程:

public class Person
{
    public ICollection<Friend> Friends { get; set; }
}

public class PersonDTO
{
    public ICollection<FriendDTO> Friends { get; set; }
}

现在,在某些情况下,我需要与所有他们的朋友一起向客户发送人,但是有时我只需要该人。我有一个自动映射器配置,它定义了Person和PersonDTO之间的简单映射,没有遗漏的属性,因为这是最常见的情况。但是,与其创建两个单独的DTOS(一个已映射Friends属性,另一个已忽略它),不如在映射时以某种方式指定它。我已经尝试了以下方法,但似乎不起作用:

var personDtoWithoutFriends = _mapper.map<Person, PersonDTO>(person,
    opts => opts.ConfigureMap()
        .ForMember(dest => dest.Friends, act => act.Ignore()))

我知道我可以使用多个DTO解决此问题,但是这是我的应用程序中极为常见的模式,最终我会创建大量DTO。在少数情况下,忽略某些属性似乎是一个更为优雅的解决方案。我是在做错什么,还是使用AutoMapper无法做到?

0 个答案:

没有答案