SaveChangesAsync 在 PUT 方法中不起作用

SaveChangesAsync not working inside PUT method

我正在使用 ODataController 向数据库插入和更新条目 我正在使用 PUT 方法,使用 .UpdateEntryAsync()

这是我的 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;
        }

on await _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 属性