如何告诉AutoMapper不要完全映射对象图

时间:2014-04-14 11:57:10

标签: automapper

我有一系列与彼此有关系的课程。像:

public class Patient : Entity
{
    public virtual string FirstName { set; get; }
    public virtual OfficeBranch OriginalOfficeBranch { set; get; }
}

public class OfficeBranch : Entity
{
    public virtual string Title { set; get; }
}

和DTO:

public class PatientDto : BaseGeneralDto
{
    public string FirstName { set; get; }
    public OfficeBranchDto OriginalOfficeBranch { set; get; }
}

public class OfficeBranchDto : BaseGeneralDto
{
    public string Title { set; get; }
}

我使用AutoMapper将它们相互映射。我正在使用NHibernate来坚持。更新PatientDto时,AutoMapper导致OfficeBranchDto中的更改也会导致NHibernate脏会话发生冲洗,这是绝对不需要的。

我想知道的是如何告诉AutoMapper不要完全映射对象图。我的意思是仅将PatientDto映射到Patient而不是PatientDtoOfficeBranchDto。我目前使用的解决方法是手动为每个映射添加Ignore,如:

Mapper.CreateMap<PatientDto, Patient>().ForMember(m => m.OriginalOfficeBranch, i => i.Ignore());

但我想有更好的解决方案。

1 个答案:

答案 0 :(得分:1)

忽略您不想要映射的成员是通过Ignore()完成的。没有更好的解决方案 - AutoMapper如何猜测您想要映射的内容并且不想映射?它不能,所以你必须明确。