はじめに:
エンティティフレームワークコア(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コアコードで余分なフィールドと多目的な関係を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。