【发布时间】:2016-06-23 06:30:18
【问题描述】:
我遇到的问题是使用实体时无法删除行。我能够找到该行,但错误我得到下一个错误:
附加信息:存储更新、插入或删除语句 影响了意外数量的行 (0)。实体可能已经 自加载实体后修改或删除。看 http://go.microsoft.com/fwlink/?LinkId=472540 获取有关信息 理解和处理乐观并发异常。
我尝试在包管理器控制台中更新数据库,尝试了几种不同的删除记录的方法,但目前没有运气。自动迁移已启用。
下面是我目前尝试使用的代码。
var ctx = new Context();
ApplicationUser user = new ApplicationUser { UserName = myUsername };
ctx.Users.Attach(user);
ctx.Users.Remove(user);
ctx.Entry(user).State = EntityState.Modified;
ctx.SaveChanges();
感谢所有帮助。我已经为此苦苦思索了好几个小时了。
【问题讨论】:
-
UserName是ApplicationUser实体的主键吗? -
@Dennis 不是。主要是Id。这是一个 uuid。
-
这似乎是你有一个乐观并发异常你知道那是什么吗?您是否有 rowversion 库,或者您同时从多个 DbContexts 读取和写入?
-
@BassamAlugili 我不相信我有 rowversion 列。不过,我有可能有多个 dbcontexts。我不确定如何检查。
-
这可能是一个副作用。我找到了这个信息:“我遇到了这个问题,它是由实体的 ID(键)字段未设置引起的。因此,当上下文去保存数据时,它找不到 ID = 0。一定要放置更新语句中的断点并验证实体的 ID 是否已设置。"
标签: c# sql entity-framework