我有一个简单的ASP.NET Core控制器:
[HttpGet("{id:int}")]
[ProducesResponseType(200)]
[ProducesResponseType(404)]
[ProducesResponseType(500)]
public ActionResult<RequestDto> Get(int id, [FromQuery]GetRequest getRequest)
{
var query = Mapper.Map<GetRequest, FindRequestQuery>(getRequest);
query.Id = id;
var request = _requestService.Find(query);
if (request == null)
{
return NotFound();
}
var requestDto = Mapper.Map<Request, RequestDto>(request);
return Ok(requestDto);
}
我的GetRequest
没有ID属性,但是我的FindRequestQuery
具有ID属性。
上面的示例效果很好,但是我想知道是否有一种方法可以告诉AutoMapper将id从方法参数映射到FindRequestQuery属性?
答案 0 :(得分:2)
您尝试过Custom Value Resolvers吗?
答案 1 :(得分:0)
您正在寻找AutoMapper的Inline Mapping功能所提供的功能。
具体地说,它看起来像这样
var query = Mapper.Map<GetRequest, FindRequestQuery>(
getRequest,
opt => opt.ConfigureMap().ForMember(dest => dest.Id, m => m.MapFrom(src => id)));