我使用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