【问题标题】:Add new row in update method in EF Core with existing primary key with identity increment = NO在 EF Core 的更新方法中添加新行,使用现有主键,标识增量 = NO
【发布时间】:2022-09-23 07:15:36
【问题描述】:

我有一个问题我还没有解决。

我在 SQL 中的主键是标识增量 = 否,我想使用 ICollection 导航属性更新一个实体(一行是新的,一行是更改的。添加和更新都在客户端完成并发送到服务器一起)。

当我调用DbSet.Update(entity) 时,我必须在服务器端生成主键(因为身份增量为 NO),我得到了这个异常:

Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException:\'数据库操作预计会影响 1 行,但实际上影响了 0 行。自加载实体以来,数据可能已被修改或删除。有关理解和处理乐观并发异常的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=527962

我想我收到此错误是因为我使用DbSet.Update(entity) 并希望添加具有填充 ID 的新行,但在 SQL 中我将标识增量设置为 NO。 我不想改变身份增量,我必须使用DbSet.Update(entity) 方法。

我该如何解决我的问题?

谢谢

    标签: c# sql entity-framework-core


    【解决方案1】:

    EF 将尝试使用键值来确定实体状态。由于现在专门设置了 ID,我认为您必须手动为新项目指定状态,否则 EF 可能会认为它处于“已修改”状态。 更多来自https://github.com/dotnet/efcore/issues/20984

    【讨论】:

      猜你喜欢
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多