使用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应该保持与数据库中的相同。
感谢
答案 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
。