提问人:Ing. Jose Valera 提问时间:7/9/2023 最后编辑:Ing. Jose Valera 更新时间:7/10/2023 访问量:99
如何使用自动映射器将一个对象转换为另一个对象
how to convert one object into another using automapper
问:
我想使用自动映射器映射另一个对象,
这是我的响应类,其中有 country 对象,我想映射它,如下图所示,
public class AxisResponseDto
{
#region Properties
public int AxisId { get; set; }
public string? AxisName { get; set; }
public CountryResponseDto? Country { get; set; }
#endregion
}
这是我对我的国家对象的回应,这也是我希望它成为的样子,
public class CountryResponseDto
{
#region Properties
public short CountryId { get; set; }
public string? CountryName { get; set; }
public string? AreaCode { get; set; }
#endregion
}
这是我希望的答案
{
axisId: 1,
axisName: 'Santo Domingo',
cuntry: {
countryId: 1
countryName: 'Republica Dominicana'
countryId: '1'
}
}
这是我获取轴对象的查询
public async Task<BaseResponse<GetAxisByIdResponseDto>> Handle(GetAxisByIdQuery request, CancellationToken cancellationToken)
{
BaseResponse<GetAxisByIdResponseDto> response = new BaseResponse<GetAxisByIdResponseDto>();
try
{
Axis axis = await _axisRepository.FindAxisId(request.AxisId);
if (axis is null)
{
response.IsSuccess = false;
response.Message = GlobalMessages.MESSAGE_QUERY_EMPTY;
return response;
}
response.IsSuccess = true;
response.Data = _mapper.Map<GetAxisByIdResponseDto>(axis);
response.Message = GlobalMessages.MESSAGE_QUERY;
}
catch (SqlException ex)
{
response.IsSuccess = false;
response.Message = ex.Message;
}
catch (Exception ex)
{
response.IsSuccess = false;
response.Message = GlobalMessages.MESSAGE_EXCEPTION;
WatchLogger.Log(ex.Message);
}
return response;
}
这是我的轴类
public class Axis
{
#region Properties
public int AxisId { get; set; }
public string? AxisName { get; set; }
public short CountryId { get; set; }
public int CompanyId { get; set; }
#endregion
}
这是我的GetAxisByIdResponseDto类
public class GetAxisByIdResponseDto
{
#region Properties
public int AxisId { get; set; }
public string? AxisName { get; set; }
public CountryResponseDto? Country { get; set; }
#endregion
}
我想要的是,当我按 id 查找轴对象时,将具有响应的国家/地区对象转换为我之前评论过的类,我不知道如何完成这部分,因为我是使用 # 映射器的新手,
我将不胜感激
请继续关注您的评论
答:
0赞
Ajay Managaon
7/10/2023
#1
为此,您不需要任何自动映射。因为你已经包括 .AxisResponseDto
CountryResponseDto
如果要从数据库获取数据,则需要执行 Eager Loading with 关键字,以便它获取两个表数据。Include()
评论
0赞
Ing. Jose Valera
7/10/2023
我不能使用 include,因为我将 dapper 与存储过程一起使用,这就是为什么我想知道我如何在另一个对象中映射另一个对象,因为使用 axisId 内的 countryid,我必须执行搜索,对于您推荐的内容,它对我不起作用@Ajay
0赞
Ajay Managaon
7/10/2023
你用的是什么ORM?数据是否通过存储过程来自数据库?
0赞
Ing. Jose Valera
7/10/2023
确切地说,数据来自使用 dapper c# @Ajay Managaon 的数据库
0赞
Ajay Managaon
7/10/2023
你能分享 dapper 查询吗?
0赞
Ing. Jose Valera
7/10/2023
我刚刚分享了我如何获取轴对象的代码,我编辑了我的问题@Ajay
评论