ASP.NET Только обновление Api, а не свойство null

#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));