ホームページ >バックエンド開発 >C++ >最初にEFコードを使用して、多くの関係で追加のプロパティを備えたカスタム参加テーブルを作成するにはどうすればよいですか?

最初にEFコードを使用して、多くの関係で追加のプロパティを備えたカスタム参加テーブルを作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-31 10:41:09481ブラウズ

How Can I Create a Custom Join Table with Additional Properties in a Many-to-Many Relationship using EF Code First?

複数の関係でカスタム接続テーブルの使用

最初にEFコードを使用する場合、カスタム接続テーブルを使用してマルチペア関係を確立することは不可能です。 EF内部管理接続テーブルは、モデルの外側に隠されています。

代替方法:関係のペア

追加の属性を持つカスタム接続テーブルを作成するには、1つの異なる方法の2つの方法を使用できます。 これにより、メンバーとメンバーコメントとコメントとメンバーコムメントの間に2つの独立した多関係が作成されます。接続テーブルは、MemberCommentクラスで表されます。

このメソッドの利点

<code class="language-csharp">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; }
}</code>

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

接続テーブルに追加の属性(何かや何かなど)が許可されます。 接続テーブル属性によってより柔軟なクエリとフィルタリングを提供します。

合意することにより、レベルの削除を予約します。

  • 例クエリの例
  • このモデルを使用すると、次のようなさまざまなクエリを実行できます。
  • 特定の姓を持つメンバーとのすべてのコメントを見つけます:

特定の名前とそのコメントを持つメンバーを見つける:

  • 接続テーブルの属性を介したメンバーのコメントをフィルター:
<code class="language-csharp">var commentsOfMembers = context.Members
    .Where(m => m.LastName == "Smith")
    .SelectMany(m => m.MemberComments.Select(mc => mc.Comment))
    .ToList();</code>

    以上が最初にEFコードを使用して、多くの関係で追加のプロパティを備えたカスタム参加テーブルを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。