2

私が取り組んでいるターンベースのマルチプレイヤー ゲームでは、ゲーム情報を格納するGameエンティティを定義しました。各ゲームは、2 人の登録ユーザーの間で行われます。既にUserエンティティを持っていたので、リレーションシップを使用してユーザーをゲームにリンクすることにしました。GameからUserエンティティへのplayer1player2の関係を定義しました。これは、各ユーザーを 2 つのプレーヤー スロットのいずれかに明示的に割り当てたいためです (プレーヤーがセットの一部である対多プレーヤーの関係ではなく)。Userエンティティから Game へのリレーションシップgames もありますユーザーが現在参加しているすべてのゲームを格納するエンティティ。

この方法で逆の関係を設定することはできません。これは、ゲームの関係がplayer1またはplayer2のいずれかの逆でなければならないためです。しかし、Xcode は逆の欠如について不平を言っているので、別の方法で関係をモデル化する必要があるかどうか疑問に思っています。Xcode の警告は次のとおりです。

一貫性エラー: User.games には逆がありません。これは高度な設定です (特定の関係に対して複数の宛先にオブジェクトを配置することはできません)。

誤って構成されたプロパティ: Game.player1 には逆が必要です

4

1 に答える 1

2

これは、 2 つの逆の関係を定義することで解決できます。 as inverse games1toplayer1games2as inverse toplayer2です。

オブジェクト グラフの整合性を維持するのに役立つため、通常は逆関係を定義することをお勧めします。たとえば、ユーザーが削除され、逆関係の削除ルールが「無効化」に設定されている場合、関連するすべてのゲームのplayer1/player2エントリは NULL に設定され、存在しないユーザー オブジェクトを指しません。

于 2013-08-13T20:34:31.137 に答える