У меня есть 2 модели в моем проекте MVC.
Назначение:
public class Assignment
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public User User { get; set; }
}
Пользователь:
public class User
{
public int ID { get; set; }
public string Name { get; set; }
public ICollection<Assignment> Assignments { get; set; }
}
Между ними существует отношение "многие к одному". Один пользователь может иметь несколько назначений. В настоящее время я работаю над контроллером API и хочу реализовать метод обновления для назначения, которое будет добавлено для конкретного пользователя.
То, что я до сих пор узнал, это попробовать метод PATCH. Вот мой блок кода, который не работает так, как я хочу.
[HttpPatch]
[Route("api/[controller]/{id}")]
public IActionResult DelegateAssignment(int id, [FromBody]JsonPatchDocument<Assignment> assignmentPatch)
{
var assignment = _context.Assignments.Find(id);
assignmentPatch.ApplyTo(assignment);
_context.SaveChangesAsync();
return Ok(assignment);
}
А тело отправляю через API (тестирование с помощью Почтальона):
[
{
"op": "replace",
"path": "/User",
"value": {
"id": 1,
"name": "User1"
}
}
]
Однако моя база данных вообще не обновляется. Поэтому мой вопрос - каков наилучший способ обновления одной таблицы базы данных, связанной с другой (связанными объектами), чтобы обе модели были обновлены (задание получит надлежащего пользователя, а у пользователя будет добавлен новый элемент в коллекцию назначений). Я также думал о реализации метода POST, но я не знаю, какая версия будет лучшей в качестве решения. Спасибо за помощь мне! :)