1

我正在使用Automapper来映射我的域模型和 DTO。当我映射Mapper.Map<SiteDTO, SiteEntity> 它工作正常

但是当我使用相同实体的集合时,它不会映射。

 Mapper.Map<Collection<SiteEntity>, Collection<SiteDTO>>(siteEntityCollection);

根据 Automapper Wiki,它说实现的列表ICollection将被映射,我正在使用实现 ICollection 的 Collection,但 automapper 不映射它。难道我做错了什么。

public class SiteEntity //SiteDTO has exactly the same properties, so I am not posting it here.
    {
        public int SiteID { get; set; }
        public string Code { get; set; }
        public string Name { get; set; }
        public byte Status { get; set; }
        public int ModifiedBy { get; set; }
        public DateTime ModifiedDate{ get; set; }
        public long TimeStamp{ get; set; }
        public string Description{ get; set; }
        public string Notes{ get; set; }
        public ObservableCollection<AreaEntity> Areas{ get; set; }
        public void SiteEntity()
         {
           Areas=new ObservableCollection<AreaEntity>();
         }
     }

编辑: SiteEntity 更新以包含构造函数。

4

2 回答 2

1

我一直在使用IList<>没有任何问题。我会先检查子域模型的映射。很可能它们还没有设置。在您的示例中:AreaEntity -> AreaEntityDto 的映射。

Mapper.Map<AreaEntity, AreaEntityDto>

来自wiki的代码示例:

Mapper.CreateMap<ParentSource, ParentDestination>()
    .Include<ChildSource, ChildDestination>();
Mapper.CreateMap<ChildSource, ChildDestination>();
于 2012-06-17T20:52:03.440 回答
0

根据您发布的代码 Automapper 将无法映射,因为您没有用于创建新 ObservableCollection 区域的 SiteEntity 的默认构造函数。

由于这不存在,当它尝试映射区域时,您将得到一个空引用异常。

于 2012-06-17T21:11:59.280 回答