#c# #asp.net-core
Вопрос:
Я создал простой api, в котором я хотел бы редактировать данные объекта с помощью метода PUT. Однако я загружаю в API только некоторые свойства этого объекта (потому что я не редактирую все поля). Могу ли я загрузить объект с заданным идентификатором из базы данных и обновить только его свойства, которые не пусты в представленном объекте?
Вопросы (Модель)
[Key]
public int QuestionId { get; set; }
public string QuestionContent { get; set; }
public string MediaUrl { get; set; }
public string Description{ get; set; }
Метод API
[HttpPut]
[Route("{id:int}")]
public Questions Edit(int id, [FromQuery]Questions question)
{
Questions currentQuestion = _context.Questions.FirstOrDefault(x => x.QuestionId == id);
}
Я обновляю объект с помощью почтальона, как это:
Теперь, в этом случае я отправляю запрос методу и получаю идентификатор вопроса, объект вопросов с mediaUrl, QuestionContent и null в качестве описания.
Можно обновить выбранный объект вопроса (выбранный с использованием переданного идентификатора), используя свойство передающего вопроса, которое не равно нулю?
Комментарии:
1. Согласно соглашению, PUT должен обновить все поля и заменить исходную версию данных. ПАТЧ следует использовать для частичного обновления. Вы ищете документ JsonPatchDocument roundthecode.com/dotnet/asp-net-core-web-api/…
Ответ №1:
вы можете использовать automapper и попытаться игнорировать нулевые значения, как показано ниже
CreateMap<Questions, Questions>()
.ForAllMembers(opts => opts.Condition((src, dest, member) => member != null));