我正在尝试使用AutoMapper映射对象。我已经创建了HTTP POST控制器方法,该方法应该为数据库创建新的Part对象。它应该将数据添加到Part和PartAvailabilites这两个实体中。数据库已经存在,并由EF Core支撑。我收到的错误是:
AutoMapper为您创建了此类型映射,但是无法使用当前配置Part-> PartDto(目标成员列表)PartManagement.Entities.Part-> PartManagement.Dto.PartDto(未映射的属性:平衡)来映射您的类型。“ < / p>
有人知道此映射可能是什么问题吗?我试图以几种方式进行映射,但是没有一种起作用。
这是我的映射:
CreateMap<PartDto, PartEntity>()
.ForMember(dest => dest.FkPartAvailability,
opts => opts.MapFrom(src => new PartAvailabilities
{
Balance = src.Balance
}));
示例JSON请求:
{
"name": "testPart",
"catalogNumber": 12345,
"balance": 10
}
这是我的实体类:
public class Part
{
public long Id { get; set; }
public int PartNumber { get; set; }
public string Name { get; set; }
public PartAvailabilities FkPartAvailability { get; set; }
}
public class PartAvailabilities
{
public PartAvailabilities()
{
Parts = new HashSet<Part>();
}
public long Id { get; set; }
public decimal Balance { get; set; }
public ICollection<Part> Parts { get; set; }
}
public class PartDto
{
public string Name { get; set; }
public int PartNumber { get; set; }
public decimal Balance { get; set; }
}
这是ManagementService类中的 Create 方法:
public async Task<PartDto> Create(PartDto request)
{
var part = _mapper.Map<PartDto, PartEntity>(request);
var createdPart = partRepository.Add(part);
await partRepository.UnitOfWork.SaveChangesAsync();
return _mapper.Map<PartDto>(createdPart);
}
这是控制器的HttpPost方法:
[HttpPost]
public async Task<IActionResult> Part_Create([FromBody] PartDto request)
{
PartDto createdPart;
try
{
if (request != null)
{
createdPart = await _partManagementService.Create(request);
return Ok(request);
}
}
catch(Exception ex)
{
return BadRequest(ex.Message);
}
return Ok(new string[] { "Part created" });
}
答案 0 :(得分:0)
该消息试图告诉您Part和PartDto之间没有映射。 AM将为您创建一个地图,但该地图无效,因为无法映射PartDto.Balance。因此,您必须创建地图并告诉AM如何映射天平。如果将CreateMissingTypeMaps设置为false,事情可能会更容易理解。