ef core - 更新复合主键
ef core - update composite primary key
我有几个表具有复合键 { Id + OrgId }。 Id 由应用程序的用户提供,OrgId 由系统处理。我想为这些表的所有实例设置 OrgId,而不必转到每个 repo 然后在附加之前手动设置 OrgId。
我该怎么做?
在 OrgId 不是主键的一部分的情况下,我覆盖 SaveChanges() 以在调用基本实现之前更新所有具有 OrgId 的跟踪实体。当 OrgId 是主键的一部分时,此方法不起作用,因为我们无法在跟踪实体后更新其主键。
因此,在 SaveChanges()
覆盖内,我将 entry.Entity.OrgId
、entry.OriginalValues["OrgId"]
和 entry.CurrentValues["OrgId"]
设置为相同的值。我不再得到例外。此外,在这个阶段我确保将 OrgId 标记为 .ValueGeneratedNever()
.
不过,我建议您看看@IvanStoev 的解决方案。
我有几个表具有复合键 { Id + OrgId }。 Id 由应用程序的用户提供,OrgId 由系统处理。我想为这些表的所有实例设置 OrgId,而不必转到每个 repo 然后在附加之前手动设置 OrgId。
我该怎么做?
在 OrgId 不是主键的一部分的情况下,我覆盖 SaveChanges() 以在调用基本实现之前更新所有具有 OrgId 的跟踪实体。当 OrgId 是主键的一部分时,此方法不起作用,因为我们无法在跟踪实体后更新其主键。
因此,在 SaveChanges()
覆盖内,我将 entry.Entity.OrgId
、entry.OriginalValues["OrgId"]
和 entry.CurrentValues["OrgId"]
设置为相同的值。我不再得到例外。此外,在这个阶段我确保将 OrgId 标记为 .ValueGeneratedNever()
.
不过,我建议您看看@IvanStoev 的解决方案。