Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Automapper-从2个源映射实体_C#_Asp.net Core_.net Core_Automapper - Fatal编程技术网

C# Automapper-从2个源映射实体

C# Automapper-从2个源映射实体,c#,asp.net-core,.net-core,automapper,C#,Asp.net Core,.net Core,Automapper,我正在编写一个asp net核心控制器方法,其中我在path(agentID)中接收部分请求,在body(scenarioReq)中接收另一部分请求。我必须用Automapper将这两个输入映射到一个实体中 我实现这一点的方式有点难看(我并不是在Map调用之后分配AgentId属性以作为单个指令): _mapper.Map(scenarioReq,opt=>opt.AfterMap((_,dest)=>dest.AgentId=AgentId)) 有人知道有没有更好的方法吗?您可以使用Resol

我正在编写一个asp net核心控制器方法,其中我在path(agentID)中接收部分请求,在body(scenarioReq)中接收另一部分请求。我必须用Automapper将这两个输入映射到一个实体中

我实现这一点的方式有点难看(我并不是在Map调用之后分配AgentId属性以作为单个指令):

_mapper.Map(scenarioReq,opt=>opt.AfterMap((_,dest)=>dest.AgentId=AgentId))


有人知道有没有更好的方法吗?

您可以使用
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);
//在您的映射配置文件中
…您当前的成员映射
.formmember(dest=>dest.AgentId,opt.MapFrom((src,dest,destMember,ctx)=>(string)ctx.Items[“AgentId]”);
//无论您在哪里进行映射
_Map(scenarioReq,opts=>opts.Items[“AgentId”]=AgentId);

感谢您朋友的帮助。此方法ResolveUsing在最新版本的AutoMapper中似乎不可用。@Gofu不客气,如果您觉得答案有用并且对您有效,请将其标记为已接受。因为此方法在最新版本的中不再存在AutoMapper@Gofu好的,我更新了它,使用
MapFrom
,我认为它存在。我在手机上,所以不能检查,但这是肯定的最新版本的automapper可能。同时检查现在它不再在lambda中赋值。是的,我已经尝试过了,它工作了,谢谢你的回答,它很有帮助,尽管我不觉得这比AfterMap更好。