具有 EF 导航属性的自动映射器
Automapper with EF Navigation Properties
我正在尝试使用 EF 的导航映射两个集合 属性。
Collection.Items
是一个 List<Item>
CollectionDTO
有一个导航 属性 到一个名为 CollectionItem
的交叉连接 table,它有另一个导航 属性 到 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()));
我正在尝试使用 EF 的导航映射两个集合 属性。
Collection.Items
是一个 List<Item>
CollectionDTO
有一个导航 属性 到一个名为 CollectionItem
的交叉连接 table,它有另一个导航 属性 到 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()));