gpt4 book ai didi

asp.net-mvc - 没有其他用户的数据库上的 DbUpdateConcurrencyException。解决方法因 NullException 错误而失败

转载 作者:行者123 更新时间:2023-12-01 06:22:59 25 4
gpt4 key购买 nike

MVC/EF 新手……我的 MVC Web 应用程序是首先使用数据库模型中的代码创建的,因为我已经有了数据库(SQLExpress)……

当我尝试将记录更新到数据库时出现以下错误:

Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded



使用首先使用数据库 Entity Framework 模型中的代码生成的标准代码时,出现此错误。奇怪,因为我正在一台其他人无法访问的独立机器上工作。

这是失败的代码:
if (ModelState.IsValid)
{
db.Entry(tblPropGroup).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}

所以我写了以下工作,它完美地工作了一段时间:
if (ModelState.IsValid)
{
db.Entry(_Prop).State = EntityState.Modified;
bool saveFailed;
do
{
saveFailed = false;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException ex)
{
saveFailed = true;
// Update original values from the database
var entry = ex.Entries.Single();
entry.OriginalValues.SetValues(entry.GetDatabaseValues());
}
} while (saveFailed);

谁能解释为什么 db.SaveChanges结果是 DbUpdateConcurrencyException在没有其他用户的数据库上?我是否对数据进行任何更改都没有区别。我在这个程序中可以访问 22 个不同的表,如果没有这个解决方法,大约一半将无法工作。

最佳答案

我怀疑这与与数据库上下文相关的竞争条件有关。

以下是一些答案:
side-effect of a feature called optimistic concurrency

Store update, insert, or delete statement affected an unexpected number of rows (0) EntityFramework

这可能会有所帮助。

最好使用:

using(DBContext context = new DBContext())
{
//Entity code
}

使用您的上下文。

关于asp.net-mvc - 没有其他用户的数据库上的 DbUpdateConcurrencyException。解决方法因 NullException 错误而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31603047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com