自动映射仅映射某些属性

时间:2012-04-07 19:52:04

标签: .net vb.net automapper

使用automapper我将我的ViewModel映射到我的业务对象,但是我想映射到现有的对象实例,并且只映射我的视图模型上的属性。 e.g。

ProductModel有id,name,code ProductBusiness有id,name,code,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应该保持与数据库中的相同。

感谢

2 个答案:

答案 0 :(得分:0)

创建映射时,可以忽略属性。

不知道你是否正在寻找更复杂的东西。

在c#

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

如果你想要更通用的东西,这是可能的,但欢迎更多的细节。

答案 1 :(得分: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