我的团队有一些关于更新实体数据以及如何最好地处理它的讨论。这是一个安全框架,所以这里有一些限制和想法。
- DB 中的每个表都有一个作为 guid 的 PK,这是我们的多节点集群解决方案所必需的。我们的想法是我们不想通过 API 将实体上的这个暴露给客户,因为它可以做两件事,
- 为他们提供工作所需的更多信息,并为黑客提供有关系统的更多信息。
- 支持噩梦是客户端以某种方式硬编码到此 ID,如果我们需要更改 PK 的客户端会受到影响。
解决方案是公开项目的自然键,例如具有唯一名称的角色对象和领域,一起保证唯一性但是更新这些值中的任何一个都是挑战,因为您需要指定要更新的旧值和新值,或者传递两个原始对象和新对象中的对象,因此我们可以找到要更新的对象。有点乱,
另一种方法是制作一个备用密钥并将其公开给客户,他们可以随心所欲地使用它,我们不在乎,因为它与我们的 PK 无关。
现在似乎每个人都只是使用 PK 作为实体的 ID,没有任何问题,不知道如何说服我们的老兵团队从过去的编程时代开始。
另一个问题是如何支持部分更新,问题是您拥有具有 10 个属性、4 个集合等的实体......具有名称+领域组合并指定要更新的属性而不是下拉整个对象更改 1 字段,发回更新。我说延迟加载集合,但不确定部分更新是否有意义。
想法?
谢谢!