Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk melaksanakan banyak hubungan dengan jadual gabungan tersuai dalam rangka entiti?

Bagaimana untuk melaksanakan banyak hubungan dengan jadual gabungan tersuai dalam rangka entiti?

DDD
DDDasal
2025-01-31 11:01:11849semak imbas

How to Implement Many-to-Many Relationships with Custom Join Tables in Entity Framework?

Buat hubungan berbilang -untuk dengan jadual sambungan tersuai

Dalam kerangka fizikal, kebanyakan hubungan biasanya melibatkan jadual sambungan tersembunyi pengurusan dalaman. Walau bagaimanapun, dalam beberapa kes, anda mungkin memerlukan jadual sambungan tersuai dengan atribut tambahan.

Keterbatasan lebih banyak hubungan

EF memerlukan jadual sambungan pengurusan dalaman yang tersembunyi untuk mencapai pelbagai hubungan.

kaedah alternatif

Sebaliknya, untuk menggunakan jadual sambungan tersuai dengan atribut tambahan, anda boleh membuat dua satu -multi -multi -ronpresships berasingan, setiap entiti ke salah satu jadual sambungan. Contoh

Pertimbangkan adegan berikut:

Dalam model ini,

digunakan sebagai jadual sambungan tersuai dengan atribut tambahan

dan

.
<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>

Hubungan pertanyaan MemberComment Something SomethingElse Untuk menanyakan hubungan ini, anda boleh menggunakan ungkapan LINQ:

Kelebihan kaedah ini

Kaedah alternatif ini mempunyai kelebihan berikut:
<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>
<code class="language-csharp">// 查找 LastName = "Smith" 的所有成员及其评论
var membersWithComments = context.Members
    .Where(m => m.LastName == "Smith")
    .Select(m => new
    {
        Member = m,
        Comments = m.MemberComments.Select(mc => mc.Comment)
    })
    .ToList();</code>

Jadual sambungan adat: Anda boleh mengawal reka bentuk jadual sambungan dan menambah atribut lain yang diperlukan. Pertanyaan: Anda boleh menyaring dan menyambung mengikut atribut dalam jadual sambungan.

Kelewatan Loading:

Anda boleh menggunakan fungsi pemuatan kelewatan EF untuk mengakses entiti yang berkaitan dengan menghubungkan jadual.
  • ringkasan
  • Walaupun EF tidak secara langsung menyokong hubungan berbilang -ke -multiple dengan jadual sambungan tersuai, kaedah alternatif yang diterangkan di sini menyediakan cara yang fleksibel untuk mengendalikan hubungan tersebut dalam model data. Kaedah ini memberikan kelebihan penyesuaian, pertanyaan, dan kelewatan pemuatan, supaya anda dapat memenuhi keperluan khusus anda.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan banyak hubungan dengan jadual gabungan tersuai dalam rangka entiti?. 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