2012-02-22 64 views
0

我正在C#和Razor中開發ASP.NET MVC3應用程序。應用程序的體系結構分爲數據訪問層(EF類+存儲庫),服務層,控制器,視圖模型和視圖。如何使用Automapper將兩個不同的類映射到一個ViewModel中?

在控制器從我的服務層獲得:

  1. 從方法Product GetProduct(id),一個Product對象包含要顯示在視圖

  2. 從所有關於產品的信息方法Filter GetFilter() a Filter包含所有用於搜索過濾器的信息的對象,例如從下拉列表中選擇的產品列表等等...

現在,如果我使用AutoMapper,我怎樣才能將這些信息映射到SelectProductViewModel類中?

public class SelectProductViewModel 
{ 
    public Product ProductToDisplay { get; set; } 
    public Filter SearchFilter { get; set; } 
} 

回答

1

AutoMapper用於將單個源類型映射到單個目標類型。你不能在這種情況下使用它。所以它可能是那樣簡單:

var model = new SelectProductViewModel 
{ 
    ProductToDisplay = service.GetProduct(id), 
    SearchFilter = service.GetFilter() 
}; 
+1

的感謝!由於它在這種情況下不起作用,我仍然不明白哪個附加值可能會將automapper提供給應用程序 – CiccioMiami 2012-02-22 10:39:57

+1

當需要將對象的屬性複製到POCO或DTO時,Automapper具有價值,從而減少了繁瑣的工作。這是它的目的,它只能用於此目的。 – MikeSW 2012-02-23 12:51:03

+0

@MikeSw,當你說對象你是指'ViewModel's'對象?因爲「POCO」是域模型還是真實模型? – stom 2017-02-01 08:45:07

相關問題