簡體   English   中英

具有 EF 導航屬性的 Automapper

[英]Automapper with EF Navigation Properties

我正在嘗試使用 EF 的導航屬性來映射兩個集合。

Collection.Items是一個List<Item>

CollectionDTO具有指向名為CollectionItem的交叉聯接表的導航屬性,該表具有指向Item另一個導航屬性。

我希望每個CollectionDTO.CollectionItem.Item都映射到Collection.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)));

});

您可以像這樣使用Select擴展方法:

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

如果Item導航屬性是一個集合,則使用SelectMany擴展方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM