エンティティフレームワークコア:余分なフィールドとの多目的な関係の処理
Entity Framework CoreのFluent APIには、多くの関係関連のテーブルをカスタマイズする際の制限があります。 この記事では、結合テーブルに追加のフィールドを追加するための回避策を詳しく説明しています。
モデル設計
この例モデルを検討してください:
<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>
テーブルは、追加のプロパティを含む結合テーブルを表しますMemberComment
およびSomething
。SomethingElse
流fluent APIの制限とソリューション流fluent APIを使用して追加フィールドで結合テーブルを直接構成することは不可能です。 解決策は、代わりに2つの1対多くの関係を実装することです
1対Manyアプローチ:クエリと操作
このアプローチにより、従来の多くの関係として、同様のクエリとデータ操作(追加、更新、削除)が可能になります。 重要なのは、結合テーブルの追加フィールドに基づいてフィルタリングを有効にします。 結合テーブル内の非魅力的な外国の鍵により、カスケード削除は正しく機能します。 結論
Fluent APIはカスタマイズされた多目的参加テーブルを直接サポートしていませんが、2つの1対多数の関係を使用すると、機能的な同等のものが提供され、協会内に追加のフィールドを含めて利用できる柔軟性が提供されます。
以上がエンティティフレームワークコアに余分な分野で多目的な関係を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。