ef核心-更新复合主键

问题描述 投票:1回答:1

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

我该怎么做?

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

entity-framework-core multi-tenant
1个回答
0
投票

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

尽管,我建议您看看@IvanStoev的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.