ホームページ > バックエンド開発 > C++ > 最初にEFコアコードで余分なフィールドと多目的な関係を実装する方法は?

最初にEFコアコードで余分なフィールドと多目的な関係を実装する方法は?

Linda Hamilton
リリース: 2025-01-31 10:56:10
オリジナル
730 人が閲覧しました

How to Implement Many-to-Many Relationships with Extra Fields in EF Core Code First?

efコアコードの追加フィールドとの複数の - と倍数の関係

はじめに:

エンティティフレームワークコア(EFコア)により、エンティティ間で複数の関係を作成できます。ただし、EF Coreは、これらの関係をカスタマイズする接続テーブルを直接サポートしていません。この記事では、最初にコードを使用して、関連表に追加のフィールドを持つ複数の関係を作成する交換方法について説明します。

相関関係の作成:

直接的な関係やより多くの関係ではなく、2組の多関係を作成します。たとえば、次のシーンを検討してください:

このシナリオでは、メンバーとコメントのエンティティには複数の関係があり、メンバーコムメントは追加のフィールドの関連する表を表します。 クエリ:

追加のフィールドとの関連性を照会するには、「プロジェクション」と呼ばれるテクノロジーを使用できます。
<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 int Something { get; set; }
    public string SomethingElse { get; set; }
    public virtual Member Member { get; set; }
    public virtual Comment Comment { get; set; }
}</code>
ログイン後にコピー

操作:

このモデルでは、他のコードの最初のモデルと同様のエンティティと関係を追加してください:

結論:

<code class="language-csharp">// 查找 LastName = "Smith" 的成员的所有评论
var commentsOfMembers = context.Members
    .Where(m => m.LastName == "Smith")
    .SelectMany(m => m.MemberComments.Select(mc => mc.Comment))
    .ToList();</code>
ログイン後にコピー
EF Coreは、関連テーブルの関連するテーブルの複数の - ミルタイプル関係を直接サポートしていませんが、2つのペアの多関係を持つ同様の関数を作成するために使用できます。この方法により、追加情報と豊富な相関を作成して、より柔軟なデータモデリングとクエリ機能を実現できます。

以上が最初にEFコアコードで余分なフィールドと多目的な関係を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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