1

ドメイン モデルと DTO のマッピングにAutomapperを使用しています。マップ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

投稿したコードに基づくと、新しいObservableCollection Areaを作成するSiteEntityのデフォルトのコンストラクターがないため、Automapperはマップに失敗します。

これは存在しないため、エリアをマップしようとするとnull参照例外が発生します。

于 2012-06-17T21:11:59.280 に答える