Я пытаюсь настроить запрос PUT, который будет обновлять запись в базе данных. Метод scaffolded перезаписывает все поля, тогда как я хочу просто обновить только поля, прошедшие через PUT. Я попытался использовать приведенный ниже код:
Код: Выделить всё
// PUT: api/Users/5
[ResponseType(typeof(void))]
public IHttpActionResult PutUser(string id, User user)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
User userToUpdate = db.Users.Where(u => u.id == id).FirstOrDefault();
if (userToUpdate == null)
{
return NotFound();
}
db.Entry(userToUpdate).CurrentValues.SetValues(user);
try
{
db.SaveChanges();
}
catch (DbUpdateException)
{
if (UserExists(id))
{
return Conflict();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
Код: Выделить всё
{
"preferredEmailUpdates":"true"
}
Код: Выделить всё
{
"preferredEmailUpdates":"true",
"phone":null
}
Подробнее здесь: https://stackoverflow.com/questions/284 ... ncludes-id