Есть некие созависимые сущности
from export
inner join nomenklatura
inner join seller
from export
inner join seller
На выходе получаю json любого уровня вложенности в разрезе любой сущности
если хочу получить json до уровня seller отправляю
/export?expand=nomenklatura.seller
/export?expand=seller
/nomenklatura?expand=seller
Для маппинга сущностей использую Automapper 8
Проблема в том что в автомапере, dto не знает на каком уровне вложенности она находится поэтому я не могу правильно собрать json
CreateMap<ExportRetail, ExportRetailDto>()
.ForMember(dest => dest.Export, opt => opt.MapFrom((src, dest, _, ctx) =>
src.ExportId == null ? null : ExpandHelper.HasExpand(ctx, "nomenklatura", ExpandMatchMode.Contains)
? ctx.Mapper.Map<NomenklaturaDto>(src.Export)
: new NomenklaturaDto { InternalId = src.ExportId.Value }));
CreateMap<ExportRetail, ExportRetailDto>()
.ForMember(dest => dest.Seller, opt => opt.MapFrom((src, dest, _, ctx) =>
ExpandHelper.HasExpand(ctx, "seller", ExpandMatchMode.Contains)
? ctx.Mapper.Map<SellerDto>(src.Seller)
: new SellerDto { SellerId = src.SellerId }
))
CreateMap<Nomenklatura, NomenklaturaDto>()
.ForMember(dest => dest.Seller, opt => opt.MapFrom((src, dest, _, ctx) =>
ExpandHelper.HasExpand(ctx, "seller", ExpandMatchMode.Contains)
? ctx.Mapper.Map<SellerDto>(src.Seller)
: new SellerDto { SellerId = src.SellerId }
))
на примере маппера видно что контекст не знает чей SellerDto.
Или пришел через NomenklaturaDto
/nomenklatura?expand=seller
Или пришел через ExportRetailDto->NomenklaturaDto
/export?expand=nomenklatura.seller
Или пришел через ExportRetailDto
/export?expand=seller
как в автомаппере можно отследить какой уровень вложенности у dto чтобы можно было управлять через expand маппингом?