Я пытаюсь обновить сущность моего продукта, используя automapper. Сущность продукта имеет отношение к сущности variOption. Когда я выполняю обновление, я получаю исключение:
"InvalidOperationException: экземпляр типа сущности 'VariOption' не может быть отслежен, поскольку другой экземпляр с таким же значением ключа для {'Id'} уже отслеживается. При присоединении существующих объектов убедитесь, что только один экземпляр объекта с данным значение ключа прилагается. "
Может ли кто-нибудь посоветовать мне это?
Product.cs
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<VariOption> VariOptions { get; set; }
public Product()
{
VariOptions = new Collection<VariOption>();
}
}
VariOption.cs
public class VariOption
{
public int Id { get; set; }
public string OptName { get; set; }
public Product Product { get; set; }
public int ProductId { get; set; }
}
ProductForUpdateDto.cs
public class ProductForUpdateDto
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public ICollection<VariOptionForUpdateDto> VariOptions { get; set; }
}
VariOptionForUpdateDto.cs
public class VariOptionForUpdateDto
{
public int Id { get; set; }
[Required]
public string OptName { get; set; }
public ICollection<VariOptionTwoForUpdateDto> VariOptionTwos { get; set; }
}
MapperProfile
CreateMap<ProductForUpdateDto, Product>();
CreateMap<VariOptionForUpdateDto, VariOption>();
UpdateProductController
public async Task<IActionResult> UpdateProduct([FromBody] ProductForUpdateDto productForUpdateDto)
{
var productFromRepo = await _product.GetProduct(productForUpdateDto.Id);
_mapper.Map(productForUpdateDto, productFromRepo);
if(await _product.SaveAll())
{
return Ok();
}
return BadRequest("$Updating product {productForSaveDto.Id} failed on {type}");
}