物理フレームワークコードが推奨されています。同じ表から複数の外側キーを処理
最初に物理的なフレームワークコードでは、これら2つのエンティティが同じテーブルを指す複数のエンティティを確立する必要がある関係に遭遇する可能性があります。これは初心者にとって特に挑戦的です。
チームとゲームが関与するモデルを考慮して、それぞれにホームチームとゲストチームがあります。ただし、従来の外部キーを使用してこのモデルを作成しようとすると、サイクル参照エラーが発生する場合があります。
問題を理解してください
元のコードフラグメントに示されているように、アウターキーがマッチエンティティで定義されている場合、実際には、MatchとTeamの間でHometeamとGuestTeam属性のマルチ関連のペアを作成します。ただし、この設定は、外部キーを介して一致することも参照するため、循環参照を引き起こします。このサイクルは、データベースの制約に違反します。 ソリューション:セットナビゲーション属性とModelBuilder Fluent APIを使用
この問題を解決するために、ナビゲーション属性のコレクションを使用し、ModelBuilder Fluent APIを物理フレームワークで使用して構成関係を拡大する改良されたモデルを使用できます。これは例です:チームクラスでは、2つの個別のコレクションナビゲーション属性を定義します。
マッチクラスでは、foreignkey属性を削除します:
DBContextクラスでは、オンモデル作成方法を書き直し、Fluent API構成関係を使用してください。この更新されたモデルでは、一致エンティティには2つの外部キー属性がありますが、ナビゲーション属性はありません。代わりに、ナビゲーション属性はチームエンティティで定義されており、チームからマッチすることを可能にします。モデル作成プロセスでは、Fluent APIを使用して、循環参照を防ぐために関係を明示的に指定します。さらに、Willcascadeondelete属性は、クラスの削除を防ぐためにfalseに設定されていますが、これはこのシーンでは推奨されていません。
この方法に従うことにより、最初に物理フレームワークコードの同じテーブルを指して複数の外部結合を使用してモデルを正常に作成できます。以上が最初にエンティティフレームワークコードの同じテーブルから複数の外国キーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。