Automapper - карта сущности из 2 источников - PullRequest
0 голосов
/ 03 мая 2019

Я пишу метод контроллера ядра сети asp, в котором я получаю часть запроса в пути ( agentID ), а другую - в теле ( sceneReq ). Я должен сопоставить эти два входа в единую сущность с Automapper.

Способ, который я достиг, довольно уродливый (я не назначаю свойство AgentId после вызова Map , чтобы быть одной инструкцией):

_mapper.Map<ChangeScenarioRequest, Scenario>(scenarioReq, opt => opt.AfterMap((_, dest) => dest.AgentId = agentID));

Кто-нибудь знает, есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 03 мая 2019

Вы можете использовать ResolutionContext и передать agentId в качестве дополнительного словарного элемента:

//In your mapping profile for <ChangeScenarioRequest, Scenario>
...your current member mappings
.ForMember(dest => dest.AgentId, opt.MapFrom((src, dest, destMember, ctx) => (string)ctx.Items["AgentId"]));

//Wherever you are doing the mapping
_mapper.Map<ChangeScenarioRequest, Scenario>(scenarioReq, opts => opts.Items["AgentId"] = agentId);
...