我使用下面显示的代码来更新实体模型。但是我得到了这个错误:
存储更新,插入或删除语句会影响意外的行数(0)
此错误的原因也是已知的,因为该属性在数据库中不存在。为此,我发现只有一个选项:首先检查实体是否存在,然后更新它。
但是,由于我一次更新10,000多行,如果此属性存在与否,则每次检查数据库都会非常耗时。
有没有其他方法可以解决这个问题?
谢谢。
foreach (Property item in listProperties)
{
db.Properties.Attach(item);
db.Entry(item).Property(x => x.pState).IsModified = true;
}
db.SaveChanges();
答案 0 :(得分:1)
你以错误的方式使用它。如果要在不检索实体的情况下进行更新,只需通过提供id来更改已更新实体的状态。
foreach (Property item in listProperties)
{
db.Entry(item).State = EntityState.Modified;
}
db.SaveChanges();
将现有但已修改的实体附加到上下文
如果您知道某个实体已存在于数据库中,但是 可能已经进行了哪些更改,然后您可以告诉上下文 附加实体并将其状态设置为Modified。
当您将状态更改为已修改实体的所有属性时 将被标记为已修改,并且将发送所有属性值 调用SaveChanges时的数据库。
答案 1 :(得分:0)
我收到此错误,只是通过将EF版本从5更新到6解决了该问题。