我使用Automapper将EF对象映射到DTO;许多对象都是多对多的安排。例如:我可以在一次性基础上忽略Automapper属性吗?
committee (table) 1 =< m committeemember (table) m >= 1 person (table)
这可能映射到:
public class CommitteeViewModel
{
public int idCommittee { get; set; }
public IEnumerable<CommitteeMemberViewModel> CommitteeMembers { get; set; }
}
public class CommitteeMemberViewModel
{
public int idCommittee { get; set; }
public int idCommitteeMember { get; set; }
public PersonViewModel Members { get; set; }
}
而且有Automapper地图<committee, CommitteeViewModel>
,<committeemember, CommitteeMemberViewModel>
和<person, PersonViewModel>
。
当我想退回一个委员会及其成员时,一切都很好。
但是,当我想要一个没有成员的委员会列表时,有没有办法让Automapper忽略某些属性,仅仅是为了那个调用?有点像:
var committeeList = Automapper.Mapper.Map
<List<committee>, List<CommitteeViewModel>>(committees)
.Ignore("CommitteeMembers");
当然,我可以创建忽略这些属性和映射到这些新的DTO的,但因为我基本上想要的一切但一个属性,我认为有可能是一个更好的办法,像创建一张不同的地图 - 但我无法找到它。
谢谢,
g。
AFAIK您不能在“* map-time *”处指定您的映射的例外。你可以做的是指定成员映射的条件,如'ForMember(d => d.Items,opt => opt.Condition(s => s.Count> 4))''。不知道这是否有助于你的情况... – khellang