0

我有一个关于目标对象的列表,我想与源进行协调。

该列表已经创建,我只想让 AutoMapper 从此列表中添加/更新/删除项目,任何时候都不应将该列表设置为新的对象引用。我怎样才能做到这一点?

这样做的原因是目标对象是 ORM 生成的代码,无论出于何种原因,它都没有设置器。

目标如下所示:

 public class Target
 {
      //This is the target member.
      public List EntityList
      {
           get{
                return _entityList;
           }
      }

      //Except this is a much more complicated, track-able list
      private List _entityList= new List(); 
 }
4

1 回答 1

0

根据我的经验,AutoMapper 在设计时并没有真正考虑到映射到已经填充的对象。但是一种方法来做你所要求的是将 AutoMapper 配置为忽略EntityList映射属性,然后使用AfterMap调用你编写的一些自定义协调函数来对齐两个列表:

Mapper.CreateMap<Source, Target>()
              .ForMember(dest => dest.EntityList, opt => opt.Ignore())
              .AfterMap((src, dest) => Reconcile(src.EntityList, dest.EntityList));
于 2013-07-26T01:24:03.737 回答