首页 > 解决方案 > 并发异常 ASP MVC C#

问题描述

我有一个系统,用户从数据库中获取令牌;该行在被访问后更新。我已经处理了并发,这样当出现 DbUpdateConcurrencyException 时,代码会重新运行以选择尚未更新的行。但是它返回

InnerException {“存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。

对于尚未更新的行。

我的模型如下:

  public int ID { get; set; }
    public int serial { get; set; }
    public int pin { get; set; }
    public string status { get; set; }
    [Timestamp]
    public byte[] RowVersion { get; set; }

这是控制器:

 public string Post()
    {
        bool tryAgain = true;
        while (tryAgain)
        {
            var myDatatToUpdate = (db.loginKeys.FirstOrDefault(b => b.status == null));
            try
            {
                myDatatToUpdate.status = "done";
                db.SaveChanges();
                tryAgain = false;
                return (myDatatToUpdate.ID.ToString());
            }
            catch (DbUpdateConcurrencyException ex)
            {

            }


        }
        return "done";

    }

标签: c#asp.net-mvc

解决方案


推荐阅读