2011-03-03 76 views
1

我有幾個關於AutoMapper的問題。AutoMapper問題

1)我有一個名爲Category的類和一個名爲CategoryViewModel的View Model。我是否需要爲每個方向創建映射?

Mapper.CreateMap(類別,CategoryViewModel)
Mapper.CreateMap(中CategoryViewModel,類別)

2)如何映射收藏?我有一個CategoryListViewModel具有IEnumberable(Of CategoryViewModel)的單個屬性。我想填充返回IQueryable(Of Category)的服務中的那些?

謝謝!

回答

4
  1. 您只需要定義一次映射。 AutoMapper足夠聰明,可以知道如何從兩個方向映射

  2. AutoMapper足夠聰明,知道如何通過調用.CreateMap()註冊類型映射後映射到集合。所以你不必爲映射類型的集合創建一個類型映射。 AutoMapper將遍歷你的集合並映射其中包含的每個對象。

要有AutoMapper映射到一個列表,只需調用List<TypeTo> destination = Mapper.Map<List<TypeFrom>, List<TypeTo>)(sourcObject);

在VB中可能看起來像下面的源,這是我通過一個C#跑到VB.NET轉換器:

Mapper.Map<List<TypeFrom>, List<TypeTo>)(sourcObject); 
+0

對於#1,我只爲實體創建了一個映射到dto。然後我試圖將dto的一個實例映射回實體,但它不起作用:「缺少類型映射配置或不支持的映射」。 – Fabio 2011-03-03 04:07:39

+0

如果實體對象中的屬性不在DTO中,那麼您可能還需要定義映射。什麼是完整的錯誤信息? – 2011-03-03 14:36:36

+0

其實你可能是對的,你可能需要爲兩個方向添加一個註冊,即使兩種類型之間的所有屬性都是相同的......他們可能不是我想象的。 – 2011-03-03 14:55:02