Я использую WebAPI для обновления некоторых объектов в базе данных (net core 3.0, mvc webapi, efcore, vs2019). У меня возникают проблемы с выяснением, какие свойства фактически были отправлены в запросе JSON моей конечной точке webapi, поэтому я не обновляю их в базе данных, если они не были отправлены (т.е. оставляю их как есть).
Вот мой код:
Модель:
public class UpdateModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
}
Метод WebAPI:
[HttpPut("entity/{id}")]
public async Task<SomeResult> Update(int id, [FromBody]UpdateModel model)
{
...
}
Запрос полезной нагрузки (метод PUT, пример URL: https://myserver/api/entity/1 ):
{
FirstName: "John"
}
В случае с вышеприведенным JSON только имя FirstName будет обновлено в БД.
Если, например, было отправлено это JSON:
{
FirstName: "John",
Address: null
}
Это будет означать, что (помимо обновления FirstName) Address также будет обновлен до нуля (чего не будет в первом случае).
На самом деле существуют не только строковые объекты в модели они просто используются здесь в качестве примера.
Мой API вызывается и все (конечно, с LastName и Address равными NULL), я просто хочу знать, какие поля действительно были отправлены в запросе JSON. Должен ли я проверять каждое поле на значение NULL или есть какой-либо другой метод проверки (более обобщенный c)?
Может быть, есть какой-то другой подход к такого рода проблеме, и я просто не знаком с ним