Я пытаюсь отобразить объекты с помощью AutoMapper. Я создал метод контроллера HTTP POST, который должен создать новый объект Part для базы данных. Он должен добавить данные в обе сущности, Part и PartAvailabilites. База данных уже существует и поддерживается EF Core. Я получаю ошибку:
AutoMapper создал эту карту типов для вас, но ваши типы не могут быть отображены с использованием текущей конфигурации 1004 *
Кто-нибудь знает, в чем может быть проблема с этим отображением? Я попытался выполнить сопоставление несколькими способами, но ни один из них не работает.
Вот мое отображение:
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:
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" });
}