自动映射:部分映射

时间:2011-03-21 07:58:36

标签: automapper

我使用Automapper将数据从objectA传输到objectB

classe ObjectA
{
   string Title;
   string Summary;
}

classe ObjectB
{
   string Title;
   string Summary;
   IAddress Address;
}

我在两个对象之间创建了这种映射

AutoMapper.Mapper.CreateMap<IObectA, IObjectB>()
      .ForMember(dest => dest.Title,           src => src.MapFrom(s => s.Title))
      .ForMember(dest => dest.Summary,         src => src.MapFrom(s => s.Summary))
      .ForMember(dest => dest.Address,         src => src.Ignore())

我创建了我的ObjectB并填充了它的所有属性,包括地址

当我调用mapper时,我希望它覆盖Title和Summary并忽略Address

ObjectB = Mapper.Map<IObjectA, IObjectB>(objectA); 

实际上,它是地址的抛出和异常。

我做错了什么?

[UPDATE] 为了表达不同,我有我的objectB,我想用来自ObjectA的数据更新它的一部分。当我说Ignore时,我的意思是将数据保留为已有的数据

1 个答案:

答案 0 :(得分:34)

我找到了解决方案。

我刚刚发现Map方法有一个超出预先实例化的目标对象的重载版本。 感谢article

Mapper.Map<IObjectA, IObjectB>(objectA, ObjectB ); 

@JoDG,感谢您的帮助