ホームページ > バックエンド開発 > C++ > エンティティフレームワークにカスタム参加テーブルとの多対称な関係を実装する方法は?

エンティティフレームワークにカスタム参加テーブルとの多対称な関係を実装する方法は?

DDD
リリース: 2025-01-31 11:01:11
オリジナル
922 人が閲覧しました

How to Implement Many-to-Many Relationships with Custom Join Tables in Entity Framework?

カスタム接続テーブルとの複数の-to -many関係を作成

物理的なフレームワークでは、ほとんどの関係には通常、内部管理の隠された接続テーブルが含まれます。ただし、場合によっては、追加の属性を備えたカスタム接続テーブルが必要になる場合があります。

より多くの関係の制限

残念ながら、Fluent APIの使用は、カスタム接続テーブルとのマルチペア関係を作成することはできません。 EFは、複数の関係を達成するために、隠された内部管理接続テーブルが必要です。

代替方法

それどころか、追加の属性を備えたカスタム接続テーブルを使用するには、2つの別々の1つの1つの1つの〜Multi -lelationshipを作成できます。各エンティティは、接続テーブルの1つになります。

次のシーンを検討してください:

このモデルでは、追加の属性を備えたカスタム接続テーブルとしておよびで使用されています。

お問い合わせ関係

public class Member
{
    public int MemberID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual ICollection<MemberComment> MemberComments { get; set; }
}

public class Comment
{
    public int CommentID { get; set; }
    public string Message { get; set; }
    public virtual ICollection<MemberComment> MemberComments { get; set; }
}

public class MemberComment
{
    [Key, Column(Order = 0)]
    public int MemberID { get; set; }
    [Key, Column(Order = 1)]
    public int CommentID { get; set; }

    public virtual Member Member { get; set; }
    public virtual Comment Comment { get; set; }

    public int Something { get; set; }
    public string SomethingElse { get; set; }
}
ログイン後にコピー
これらの関係を照会するには、linq式を使用できます:

MemberComment Something SomethingElse<方法>このメソッドの利点

この代替方法には、次の利点があります

<定>カスタム接続テーブル:

接続テーブルの設計を制御し、必要に応じて他の属性を追加できます。

// 查找 LastName = "Smith" 的成员的所有评论
var commentsOfMembers = context.Members
    .Where(m => m.LastName == "Smith")
    .SelectMany(m => m.MemberComments.Select(mc => mc.Comment))
    .ToList();
ログイン後にコピー
<查>お問い合わせ:
// 查找 LastName = "Smith" 的所有成员及其评论
var membersWithComments = context.Members
    .Where(m => m.LastName == "Smith")
    .Select(m => new
    {
        Member = m,
        Comments = m.MemberComments.Select(mc => mc.Comment)
    })
    .ToList();
ログイン後にコピー
接続テーブルの属性に従って画面および接続できます。

遅延荷重:テーブルを接続して、EFの遅延荷重関数を使用して関連するエンティティにアクセスできます。

概要
  • EFは、カスタム接続テーブルとの複数の - ミルタイプル関係を直接サポートしていませんが、ここで説明する代替方法は、データモデルでそのような関係を処理する柔軟な方法を提供します。この方法は、特定のニーズを満たすことができるように、カスタマイズ、クエリ、および遅延ロードの利点を提供します。

以上がエンティティフレームワークにカスタム参加テーブルとの多対称な関係を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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