繁体   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