2013-01-14 36 views
3

在我的項目中,我有一個來自Client -> Projects的一對多關係。因此,在我的一個觀點中,我試圖展示屬於該客戶的所有項目。所以我有一個代表所有客戶項目的IEnumerable<ProjectDetailsViewModel>AutoMapper MaxDepth()方法

問題是ProjectDetailsViewModel有一個ClientDetailsViewModel然後有一個IEnumerable<ProjectDetailsViewModel>等等,創建一個無限循環的相同的實體。

這是適合在該.ForMember()上使用MaxDepth()方法的地方嗎?如果是這樣,在這種情況下如何使用它,如果沒有,那麼解決方案是什麼?

我試過Client上的MaxDepth(1),雖然這可以防止StackOverflow異常,但它不會在該客戶端的視圖模型中包含任何數據。

回答

4

的問題是,我明確要求AutoMapper從與AutoMapConfig這樣:

.ForMember(x => x.Client, opt => opt.MapFrom(src => 
    AutoMapper.Mapper.Map<ClientDetailsViewModel>(src.Client))) 

如果我只是把它定義爲:

.ForMember(x => x.Client, opt => opt.MapFrom(src => src.Client)) 

AutoMapper會知道後1個遞歸停止,因爲我已經有了Client -> ClientDetailsViewModel的地圖,所以沒有問題。