如何解决SaveChangesAsync在PUT方法内部不起作用
我正在使用ODataController插入和更新数据库条目 我正在使用.UpdateEntryAsync()击中PUT方法
这是我的Put方法。
public async Task<IHttpActionResult> Put([FromODataUri] string key,Delta<KYCBtnDetails> patch)
{
try
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
KYCBtnDetails KYCBtnDetails = await _KYCDBModel.KYCBtnDetails.FindAsync(key);
if (KYCBtnDetails == null)
{
return NotFound();
}
patch.Put(KYCBtnDetails);
KYCBtnDetails.id = key;
try
{
await _KYCDBModel.SaveChangesAsync();
}
catch (Exception e)
{
}
return Updated(KYCBtnDetails);
}
catch (Exception ex)
{
}
return null;
}
在等待_KYCDBModel.SaveChangesAsync()时,给我错误 “不允许新事务,因为会话中正在运行其他线程” “在提供程序连接上启动事务时发生错误。有关详细信息,请参阅内部异常。”
有时会运行,有时会提示错误
请帮助我, 谢谢。
解决方法
按照惯例,Put
控制器动作签名应如下所示:
public async Task<IHttpActionResult> Put([FromODataUri] string key,[FromBody]KYCBtnDetails kycBtnDetails)
{
// ...
}
如果您决定使用Patch
,则控制器动作签名应如下所示:
public async Task<IHttpActionResult> Patch([FromODataUri] string key,[FromBody]Delta<KYCBtnDetails> patch)
{
// ...
}
请特别注意FromBody
属性
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。