Entity framework 存储更新insert或delete语句影响了意外的行数(0)

Entity framework 存储更新insert或delete语句影响了意外的行数(0),entity-framework,Entity Framework,我正在使用下面显示的代码来更新实体模型。但我得到了这个错误: 存储更新、插入或删除语句影响了意外的行数(0) 这个错误的原因也是众所周知的,因为数据库中不存在这个属性。为此,我发现只有一个选项:首先检查实体是否存在,然后更新它 但是,由于我一次更新10000多行,每次在数据库中检查该属性是否存在将非常耗时 还有别的办法解决这个问题吗 多谢各位 foreach (Property item in listProperties) { db.Properties.Attach(item);

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

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

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

但是,由于我一次更新10000多行,每次在数据库中检查该属性是否存在将非常耗时

还有别的办法解决这个问题吗

多谢各位

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

db.SaveChanges();

你用错了。如果要更新而不检索实体,只需提供id来更改已更新实体的状态

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

db.SaveChanges();
将现有但已修改的实体附加到上下文中

如果您知道数据库中已经存在一个实体,但 您可以告诉上下文可能已对其进行了更改 附着实体并将其状态设置为“已修改”

将状态更改为“修改了实体的所有属性”时 将标记为已修改,并且所有属性值都将发送到 调用SaveChanges时的数据库


我只需将EF版本从5更新到6,就得到了这个错误。解决了这个问题。

您不能检查主键属性的值吗?比如,当
Id==0时,它是一个新的
属性。