我正在使用 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 值还是有任何其他检查方法(更通用)?
也许还有其他方法可以解决此类问题,而我只是不熟悉?