c# - 并发异常 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";
}
解决方案
推荐阅读
- python - 'function' 对象没有属性 'grab'
- python - 如何获取班级的GPA分布
- c++ - 致命错误 LNK1318:意外的 PDB 错误;格式 (11)
- delphi - 如何处理搜索中的 TCategoryButtons 项目可见性?
- javascript - 无法在 React 状态下设置对象数组
- python - 一旦模型拟合,Keras 如何评估单个图像
- javascript - 事件处理程序找不到我的目标列表
- c++ - 如何正确地将 C 库中的结构中的字符串克隆到新的内存地址中?
- android - 使用 RowsSupportFragment 自定义 Android 和 FireTv UI
- microsoft-teams - 在 Microsoft 团队中保存自定义连接器时出错