duy*_*yen 5 c# entity-framework automapper
我正在尝试使用 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)));
});
Run Code Online (Sandbox Code Playgroud)
您可以使用Select这样的扩展方法:
// CreateMap<source, destination>()
cfg.CreateMap<Collection, CollectionDTO>()
.ForMember(dest => dest.Items,
opts => opts.MapFrom(src =>
src.CollectionItems.Select(ci=>ci.Item).ToList()));
Run Code Online (Sandbox Code Playgroud)
如果Item导航属性是集合,则使用SelectMany扩展方法:
// CreateMap<source, destination>()
cfg.CreateMap<Collection, CollectionDTO>()
.ForMember(dest => dest.Items,
opts => opts.MapFrom(src =>
src.CollectionItems.SelectMany(ci=>ci.Item).ToList()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4579 次 |
| 最近记录: |