10

私が理解していることから、db.Model の親属性 (通常はコンストラクター呼び出しで定義/渡される) を使用すると、データ モデルの階層を定義できます。その結果、エンティティ グループのサイズが大きくなります。しかし、なぜそれをしたいのか、私にはよくわかりません。これは厳密に ACID 準拠のためですか? それぞれが最適またはより適切なシナリオを見たいと思います。

4

2 に答える 2

15

いくつかの違いがあります:

  • 同じ祖先を持つすべてのエンティティは、同じエンティティ グループに属します。トランザクションは、単一のエンティティ グループ内のエンティティにのみ影響を与えることができます。
  • 1 つのエンティティ グループへのすべての書き込みはシリアル化されるため、スループットは制限されます。
  • 親エンティティは作成時に設定され、固定されます。リファレンスはいつでも変更できます。
  • 参照プロパティを使用すると、直接的な関係のみを照会できますが、親プロパティを使用すると、.ancestor() フィルターを使用して、特定の先祖から (直接的または間接的に) 子孫をすべて見つけることができます。
  • 各エンティティには 1 つの親しかありませんが、複数の参照プロパティを持つことができます。
于 2008-10-19T08:56:43.727 に答える
8

エンティティ グループ (parent 属性で定義) の唯一の目的は、異なるエンティティ間のトランザクションを有効にすることです。トランザクションが必要ない場合は、エンティティ グループの関連付けを使用しないでください。

ドキュメントのKeys and Entity Groupsセクションを読み直すことをお勧めします。アイデアを理解するのにかなりの時間を要しました。

これらの講演もご覧ください。特に、トランザクションとエンティティ グループについて説明しています。

于 2008-10-19T02:23:47.173 に答える