2012-04-07 61 views
1

使用自動映射我將我的ViewModel映射到我的業務對象,但我想映射到現有的對象實例,並只映射我的視圖模型的屬性。例如自動映射只映射某些屬性

產品型號有ID,名稱,代碼 ProductBusiness有ID,名稱,代碼,dateadded

Function Add(ByVal model As ProducModel) As ActionResult 
    dim _ProductBusiness = (Load ProductBusiness from db) 

    dim newProductBusiness = AutoMapper.Mapper.Map(Of Business.User)(model) 
End Function 

我想以某種方式通過在現有的業務對象實例,只圖3點的屬性是在這兩個對象,dateadded應該保持與數據庫中的一樣。

感謝

回答

0

當您創建的映射,你可以忽略的屬性。

不知道你是否在尋找更復雜的東西。

在C#

Mapper.CreateMap<ProductModel, ProductBusiness>() 
.ForMember(target => target.dateadded, opt => opt.Ignore()); 

如果你wan't更多的東西通用的,這是可能的,但更多的細節將受到歡迎。

0

你可以這樣做:

Public Sub MapIt(input As ProductModel, output As ProductBusiness) 
     AutoMapper.Mapper.CreateMap(Of ProductModel, ProductBusiness)() 
     AutoMapper.Mapper.Map(input, output) 
    End Sub 

但要記住,你不需要調用CreateMap每次AutoMapper將忽略dateadded。 (還沒有測試過,但我相信它會這樣做)。

或者你也可以這樣做:

Public Sub MapIt(input As c1, output As c2) 
     AutoMapper.Mapper.DynamicMap(input, output) 
    End Sub 

第二個代碼是相同第一個DynamicMap將爲您撥打CreateMap