如何在Automapper 6中使用比源更少的属性映射到目标?

时间:2017-08-26 23:19:20

标签: c# automapper

我正在尝试为下一个案例编写映射配置。我有域对象:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string ImagePath { get; set; }

    public virtual ICollection<Service> Services { get; set; }
    public int? SubcategoryId { get; set; }
    [ForeignKey("SubcategoryId")]
    public virtual Category Subcategory { get; set; }
}

和Dto来映射:

public class CategoryDto
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string ImagePath { get; set; }
}

问题是,目标类的属性比源少。如果我使用简单的地图,我会得到一个例外。

Mapper.Initialize(n => n.CreateMap<Service, ServiceDto>());

我无法使用Ignore(),因为它将应用于目标类,而不是源类。由于某种原因,方法ForSourceMember()也没有帮助。我看过this问题,大多数情况都没问题,但属性Services不是null,而是Count = 0,当它为空时。我也从右边读了一些类似的问题,但是他们没有帮助,也许他们在以前的版本中工作过。

希望有人能帮助我找到解决方案,或解释我错过的内容。

1 个答案:

答案 0 :(得分:1)

Mapper.Initialize只能在您的应用初始化时调用一次,而不是按照您现在正在执行的请求调用。