entity-framework-core - ef core - 更新复合主键
问题描述
我有几个带有复合键 { Id + OrgId } 的表。Id 由应用程序的用户提供,OrgId 由系统处理。我想为这些表的所有实例设置 OrgId,而不必去每个 repo 然后在附加之前手动设置 OrgId。
我怎样才能做到这一点?
在 OrgId 不是主键的一部分的情况下,我重写 SaveChanges() 以在调用基本实现之前更新所有具有 OrgId 的跟踪实体。当 OrgId 是主键的一部分时,这种方法不起作用,因为一旦实体被跟踪,我们就无法更新它的主键。
解决方案
所以在SaveChanges()
我设置的覆盖内entry.Entity.OrgId
,entry.OriginalValues["OrgId"]
, 和entry.CurrentValues["OrgId"]
具有相同的值。我不再得到例外。此外,在这个阶段,我确保将 OrgId 标记为.ValueGeneratedNever()
.
不过,我建议您查看@IvanStoev 的解决方案。
推荐阅读
- python - 根据其他模型Django的值更改模型的值
- c++ - 使用柯南构建 libjpeg/9d 时引导生成文件片段时出错
- python-3.x - 使用for循环不计算列表的长度,而是计算列表中字符串的字符?
- php - PHP继承非类对象的属性
- python - Python venv 项目随机无法找到 python3 二进制文件
- sql - oracle 为在 1 分钟内出售的商品选择日期
- python-3.x - ConnectionError 异常单独工作但不能在函数中使用
- java - 在 Eclipse 中运行 Java Maven 应用程序时出现 LifecycleException
- ruby-on-rails - bundler 报告的 Gem 不兼容性没有逻辑意义
- converse.js - Notification Group Room 消息不显示未读消息,仅显示浏览器通知