2016-06-16 29 views
1

EFのナビゲーションプロパティを使用して2つのコレクションをマップしようとしています。EFのナビゲーションプロパティを持つAutomapper

Collection.ItemsList<Item>

CollectionDTOItemに別のナビゲーションプロパティを有するCollectionItemと呼ばれる相互結合テーブルにナビゲーションプロパティを有しています。

CollectionDTO.CollectionItem.ItemCollection.Itemにマップします。

私はこれを試しましたが、わかりません。

誰かが助けることができますか?

var mapperConfig = new MapperConfiguration(cfg => 
{ 
    // CreateMap<source, destination>()  
    cfg.CreateMap<Collection, CollectionDTO>() 
     .ForMember(dest => dest.Items, 
        opts => opts.MapFrom(src => 
         src.CollectionItems.Where(x => x.CollectionId == src.Id).ToList().ForEach(ci => ci.Item))); 

}); 

答えて

0

あなたはこのようSelect拡張メソッドを使用することができます。Itemナビゲーションプロパティがコレクションである

// CreateMap<source, destination>()  
    cfg.CreateMap<Collection, CollectionDTO>() 
     .ForMember(dest => dest.Items, 
        opts => opts.MapFrom(src => 
         src.CollectionItems.Select(ci=>ci.Item).ToList())); 

場合、SelectMany拡張メソッドを使用します。

// CreateMap<source, destination>()  
    cfg.CreateMap<Collection, CollectionDTO>() 
     .ForMember(dest => dest.Items, 
        opts => opts.MapFrom(src => 
         src.CollectionItems.SelectMany(ci=>ci.Item).ToList())); 
+0

2番目のオプションは、私がコンパイル与えていました最初のオプションは魅力的に機能しました!ありがとう! – duyn9uyen

+0

歓迎します;)。これは、私が推測したところでは、 'CollectionItems'は接合テーブルを表し、' Item'は参照ナビゲーションプロパティです。 – octavioccl

関連する問題