存储更新插入或删除语句影响了意外的行数(0)

时间:2014-07-26 06:53:06

标签: entity-framework

我使用下面显示的代码来更新实体模型。但是我得到了这个错误:

  

存储更新,插入或删除语句会影响意外的行数(0)

此错误的原因也是已知的,因为该属性在数据库中不存在。为此,我发现只有一个选项:首先检查实体是否存在,然后更新它。

但是,由于我一次更新10,000多行,如果此属性存在与否,则每次检查数据库都会非常耗时。

有没有其他方法可以解决这个问题?

谢谢。

foreach (Property item in listProperties)
{
    db.Properties.Attach(item);
    db.Entry(item).Property(x => x.pState).IsModified = true;
}

db.SaveChanges();

2 个答案:

答案 0 :(得分:1)

你以错误的方式使用它。如果要在不检索实体的情况下进行更新,只需通过提供id来更改已更新实体的状态。

foreach (Property item in listProperties)
{
    db.Entry(item).State = EntityState.Modified;
}

db.SaveChanges();

将现有但已修改的实体附加到上下文

  

如果您知道某个实体已存在于数据库中,但是   可能已经进行了哪些更改,然后您可以告诉上下文   附加实体并将其状态设置为Modified。

     

当您将状态更改为已修改实体的所有属性时   将被标记为已修改,并且将发送所有属性值   调用SaveChanges时的数据库。

Source

答案 1 :(得分:0)

我收到此错误,只是通过将EF版本从5更新到6解决了该问题。