如何解决对API的PUT请求将值设置为NULL
我下面有一个.Net Core API控制器,它可以执行PUT请求。
在sql Server中受影响的表如下:
carID (varchar(15),NULL)
optionID (varchar(15),NOT NULL)
optionDescription (varchar(255),NULL)
optionType (varchar(50),NULL)
factoryID (varchar(15),NULL)
{
" optionID": "633fr","optionDescription": "Full Tech Package A"
}
它确实更新了数据库中的条目,但是还将所有未在PUT调用中发送的值都设置为NULL。因此,尽管它确实更新了optionDescription,但它将除optionID之外的所有其他值都设置为NULL。
如何阻止它设置其他值?
谢谢!
这是控制器:
// PUT: api/CarOptions/5
[HttpPut("{id}")]
public async Task<IActionResult> PutCarOptions(Guid id,CarOptions carOptions)
{
if (id != carOptions.OptionId)
{
return BadRequest();
}
_context.Entry(carOptions).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (dbupdateConcurrencyException)
{
if (!CarOptionsExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
解决方法
根据您的描述,建议您先尝试附加模型,然后将特定属性IsModified设置为true。
这只会更新特定字段,而不更新整个模型。
更多详细信息,您可以参考以下示例:
// PUT: api/CarOptions/5
[HttpPut("{id}")]
public async Task<IActionResult> PutCarOptions(Guid id,CarOptions carOptions)
{
_context.Documents.Attach(carOptions);
_context.Entry(carOptions).Property(x => x.optionDescription).IsModified = true;
_context.SaveChanges();
return NoContent();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。