10

据我了解, db.Model 的 parent 属性(通常在构造函数调用中定义/传递)允许您在数据模型中定义层次结构。结果,这增加了实体组的大小。但是,我不太清楚我们为什么要这样做。这是否严格符合 ACID 标准?我想看看每个场景最适合或更合适的场景。

4

2 回答 2

15

有几个区别:

  • 具有相同祖先的所有实体都在同一个实体组中。事务只能影响单个实体组内的实体。
  • 对单个实体组的所有写入都是序列化的,因此吞吐量是有限的。
  • 父实体在创建时设置并且是固定的。可以随时更改参考。
  • 使用引用属性,您只能查询直接关系,但使用父属性,您可以使用 .ancestor() 过滤器查找从给定祖先继承的所有内容(直接或间接)。
  • 每个实体只有一个父级,但可以有多个引用属性。
于 2008-10-19T08:56:43.727 回答
8

实体组(由父属性定义)的唯一目的是启用不同实体之间的事务。如果您不需要事务,请不要使用实体组关系。

我建议您重新阅读文档的Keys and Entity Groups部分,我花了很多时间阅读才掌握了这个想法。

还可以观看这些谈话,其中包括他们讨论交易和实体组的内容:

于 2008-10-19T02:23:47.173 回答