Обновление API .NET включает идентификаторC#

Место общения программистов C#
Anonymous
Обновление API .NET включает идентификатор

Сообщение Anonymous »

Я имею опыт работы с API Ruby on Rails, но в настоящее время работаю над веб-API .NET C#. Я знаком с веб-формами C# и .NET.

Я пытаюсь настроить запрос 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);
}
Однако метод не работает в db.SaveChanges(), поскольку он не может перезаписать 'id', который является ключом. Запрос на размещение имеет тип контента: application/json, а json указан ниже:

Код: Выделить всё

{
"preferredEmailUpdates":"true"
}
Это должно работать для всех полей и принимать пустые записи. Таким образом, приведенное ниже значение также справедливо и должно обновить поле телефона до нуля.

Код: Выделить всё

{
"preferredEmailUpdates":"true",
"phone":null
}
Как обновить эти значения, не обновляя ключ?

Подробнее здесь: https://stackoverflow.com/questions/284 ... ncludes-id

Вернуться в «C#»