0

我正在使用 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 也将被更新为 null (这不会在第一种情况下)。

Model 中其实不只是字符串对象,这里只是作为一个例子。

我的 API 被调用并且所有内容(当然,LastName 和 Address 设置为 NULL),我只想知道在 JSON 请求中实际发送了哪些字段。我必须检查每个字段的 NULL 值还是有任何其他检查方法(更通用)?

也许还有其他方法可以解决此类问题,而我只是不熟悉?

4

0 回答 0