Контекст
У меня настроен API с операциями CRUD - у меня проблемы с конечной точкой HTTP PUT, которую я использую для обновления сущности. Я только хочу, чтобы API мог обновлять некоторые поля для сущности, поэтому я использую объект передачи данных (DTO) и использую AutoMapper, чтобы сопоставить его с моделью домена для Entity Framework Core (EF Core). ) обновить сущность в базе данных. При использовании AutoMapper для отображения из DTO в модель домена, нулевые значения будут добавлены, а затем перезаписать эти значения в базе данных. Как я могу предотвратить это?
Код
PlayerController.cs
[HttpPut("{id}")]
public async Task<IActionResult> PutPlayer(Guid id, PlayerUpdateDto playerUpdateDto)
{
Player player = _mapper.Map<Player>(playerUpdateDto);
_context.Entry(player).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!PlayerExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return Ok(player);
}
Player.cs
public class Player
{
[Key]
public Guid Id { get; set; }
[Required]
public string Name { get; set; }
public double Rating { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public ICollection<Match> MatchesOne { get; set; }
public ICollection<Match> MatchesTwo { get; set; }
public ICollection<Match> MatchesThree { get; set; }
public ICollection<Match> MatchesFour { get; set; }
}
PlayerUpdateDto.cs
public class PlayerUpdateDto
{
public Guid Id { get; set; }
public string Name { get; set; }
}
Рейтинг Player , созданные и обновленные свойства имеют нулевые значения, но я хочу они остаются такими же, так как они не в DTO. Любая помощь будет принята с благодарностью!