Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk melaksanakan banyak hubungan dengan jadual gabungan tersuai dalam rangka entiti?
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 tambahandan
.<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:
Kelewatan Loading:
Anda boleh menggunakan fungsi pemuatan kelewatan EF untuk mengakses entiti yang berkaitan dengan menghubungkan jadual.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!