ホームページ > バックエンド開発 > C++ > 最初にエンティティフレームワークコードの同じテーブルから2つの外部キーを適切にマッピングするにはどうすればよいですか?

最初にエンティティフレームワークコードの同じテーブルから2つの外部キーを適切にマッピングするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-29 08:20:13
オリジナル
653 人が閲覧しました

How to Properly Map Two Foreign Keys from the Same Table in Entity Framework Code First?

エンティティフレームワークコード最初に:単一のテーブルからの複数の外国キーの処理

この記事では、同じテーブル(例えば、

)からエンティティフレームワークコードの別のテーブル(Team)への2つの外部キーをマッピングするという課題について説明します。 遭遇する一般的なエラーは、循環的な参照例外です。Match

問題:

Matchを使用してHomeTeamエンティティをモデル化すると、どちらもGuestTeamテーブルを参照すると、循環的な関係エラーがしばしば発生します。 これは、エンティティフレームワークがデフォルトで1対多数の関係を想定し、循環依存につながるためです。 Team

解決策:

重要なのは、関係を2つの別々の1対多数の関係を

から

から明示的に定義することです。 これは、Teamクラス内に2つのナビゲーションプロパティを作成することで実現されます。 MatchTeam改訂モデル:

は今、
<code class="language-csharp">public class Team
{
    public int TeamId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Match> HomeMatches { get; set; }
    public virtual ICollection<Match> AwayMatches { get; set; }
}

public class Match
{
    public int MatchId { get; set; }
    public int HomeTeamId { get; set; }
    public int GuestTeamId { get; set; }
    public float HomePoints { get; set; }
    public float GuestPoints { get; set; }
    public DateTime Date { get; set; }

    public virtual Team HomeTeam { get; set; }
    public virtual Team GuestTeam { get; set; }
}</code>
ログイン後にコピー

のコレクションがあり、試合で各チームの役割を明確に区別していることに注意してください。Team HomeMatchesAwayMatchesモデル構成(dbcontext):

関係は、クラスの

メソッド:

メソッドで明示的に定義する必要があります。 OnModelCreating この構成は、外部キーを明示的にマッピングし、重要なことに、試合が削除されたときにチームの偶発的な削除を防ぐようにDbContextを設定します。

このアプローチは、循環的な参照エラーを回避し、堅牢で保守可能なデータモデルを提供する関係を明確に定義します。

以上が最初にエンティティフレームワークコードの同じテーブルから2つの外部キーを適切にマッピングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート