ef核心-更新复合主键

时间:2020-01-10 14:17:53

标签: entity-framework-core multi-tenant

我有几个带有组合键{Id + OrgId}的表。 Id由应用程序的用户提供,OrgId由系统处理。我想为这些表的所有实例设置OrgId,而不必转到每个存储库,然后在附加之前手动设置OrgId。

我该怎么做?

如果OrgId不是主键的一部分,则在调用基本实现之前,我重写SaveChanges()以更新所有具有OrgId的被跟踪实体。当OrgId是主键的一部分时,此方法不起作用,因为一旦跟踪实体,我们就无法更新它的主键。

1 个答案:

答案 0 :(得分:1)

因此,在SaveChanges()覆盖中,我将entry.Entity.OrgIdentry.OriginalValues["OrgId"]entry.CurrentValues["OrgId"]设置为相同的值。我不再例外。另外,在此阶段,我确保将OrgId标记为.ValueGeneratedNever()

尽管如此,我还是建议您看一下@IvanStoev的解决方案。