2013-09-30 37 views
1

我只是看看在我們的應用程序中使用AutoMapper的可能性。它的工作很好,但我有這種情況。鑑於這一類在映射期間更改配置

public class Foo 
{ 
    public string Name { get; set; } 
    public Bar Bar { get; set; } 
} 

我可以映射到它細使用默認配置

Mapper.CreateMap<Something, Foo>(); 

,然後調用

.Project().To<Foo>(); 

(施加到一個IQueryable)

然而,在一個情況我不想映射Bar屬性。我希望它被忽略。是否有可能改變這一次的映射配置?如果是這樣如何?

+0

您是否可以在可以執行'if(我想要Bar)CreateMapWithBar else(CreateMapWithoutBar)'的情況下創建地圖?還是在啓動時執行創建地圖? –

+0

我希望能夠在啓動時創建地圖。然後根據if語句選擇映射屬性 –

+0

對不起,我只知道如何在你需要的時候創建地圖。 –

回答

2

不,這是不可能的,尤其是考慮到您使用EF映射方式。你真的在談論表達式樹的有條件構建。解決此問題的最佳方法是創建兩個單獨的目標類型,可能需要使用繼承來添加其他字段。

+0

我擔心你會這麼說。這是我的回退計劃。情況是我們需要確保某些客戶無法訪問某些字段 –

+0

您可以創建單獨的映射器實例,您不必在'Mapper'上使用靜態方法。它可能會變得複雜,但您可以使用自己的配置創建映射引擎的多個實例。 – Charleh