Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh membuat jadual gabungan tersuai dengan sifat tambahan dalam hubungan yang banyak menggunakan kod EF terlebih dahulu?

Bagaimanakah saya boleh membuat jadual gabungan tersuai dengan sifat tambahan dalam hubungan yang banyak menggunakan kod EF terlebih dahulu?

Patricia Arquette
Patricia Arquetteasal
2025-01-31 10:41:09434semak imbas

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

menggunakan jadual sambungan tersuai dalam pelbagai hubungan

Apabila menggunakan kod EF terlebih dahulu, adalah mustahil untuk menggunakan jadual sambungan tersuai untuk mewujudkan hubungan multi -pair. Jadual sambungan pengurusan dalaman tersembunyi di luar model.

Kaedah alternatif: Sepasang hubungan

Untuk membuat jadual sambungan tersuai dengan atribut tambahan, anda boleh menggunakan dua kaedah yang berbeza dari satu -ke -multiple hubungan:

Ini mewujudkan dua multi -hubungan bebas antara ahli dan ahli dan komen dan ahli. Jadual sambungan diwakili oleh kelas ahli.

<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>
Kelebihan kaedah ini

Kaedah ini mempunyai kelebihan berikut:

membolehkan atribut tambahan pada jadual sambungan (seperti sesuatu dan sesuatu).

memberikan lebih banyak pertanyaan dan penapisan yang lebih fleksibel dengan atribut jadual sambungan.
  • Rizab penghapusan tahap dengan dipersetujui.
  • Contoh pertanyaan
Menggunakan model ini, anda boleh melakukan pelbagai pertanyaan, seperti:

Cari semua komen dengan ahli dengan nama keluarga tertentu:

  • Cari ahli dengan nama tertentu dan komen mereka:
<code class="language-csharp">var commentsOfMembers = context.Members
    .Where(m => m.LastName == "Smith")
    .SelectMany(m => m.MemberComments.Select(mc => mc.Comment))
    .ToList();</code>
  • Komen ahli penapis melalui atribut dalam jadual sambungan:
<code class="language-csharp">var membersWithComments = context.Members
    .Where(m => m.LastName == "Smith")
    .Select(m => new
    {
        Member = m,
        Comments = m.MemberComments.Select(mc => mc.Comment)
    })
    .ToList();</code>

Atas ialah kandungan terperinci Bagaimanakah saya boleh membuat jadual gabungan tersuai dengan sifat tambahan dalam hubungan yang banyak menggunakan kod EF terlebih dahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn