1

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

ProductModel 有 id,name,code ProductBusiness 有 id,name,code,date added

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 个属性,添加的日期应该与数据库中的相同。

谢谢

4

2 回答 2

0

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

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

在c#中

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

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

于 2012-04-07T20:18:30.363 回答
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给你。

于 2012-04-09T13:23:28.173 回答