Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk memodelkan hubungan perlawanan pasukan dengan dua kunci asing dari jadual yang sama dalam kod rangka entiti terlebih dahulu?

Bagaimana untuk memodelkan hubungan perlawanan pasukan dengan dua kunci asing dari jadual yang sama dalam kod rangka entiti terlebih dahulu?

Barbara Streisand
Lepaskan: 2025-01-29 08:04:09
asal
744 orang telah melayarinya

How to Model a Team-Match Relationship with Two Foreign Keys from the Same Table in Entity Framework Code First?

menggunakan kod rangka kerja fizikal yang disukai: Buat dua kekunci luaran dari jadual yang sama untuk menunjukkan hubungan yang sepadan dengan pasukan

<:> Soalan:

Apabila seorang pemula mencatatkan kerumitan kod kerangka fizikal, dia mencari bimbingan untuk menentukan model yang berkesan untuk mencerminkan hubungan antara pasukan dan permainan. Keperluan khusus ialah setiap permainan melibatkan dua entiti pasukan yang berbeza, yang ditentukan sebagai pasukan rumah dan pasukan tetamu, dan mengekalkan hasil permainan.

Jawapan:

anda boleh menggunakan kaedah berikut untuk membina model yang diperlukan:

mengulangi atribut kelas pasukan:

Keluarkan harta iCollection perlawanan yang sedia ada dari kelas pasukan.

Memperkenalkan dua sifat iCollection baru: Homematches dan Awaymatches.
  1. Ubah suai model seperti berikut:
  2. Hubungan Kunci Luar Custom:
<code class="language-csharp">public class Team
{
    public int TeamId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Match> HomeMatches { get; set; }
    public virtual ICollection<Match> AwayMatches { get; set; }
}</code>
Salin selepas log masuk

Ubah suai kelas padanan untuk mengandungi atribut utama yang diperlukan, dan keluarkan atribut dari sifat hometeam dan tetamu.

Gunakan API Fluent dalam DBContex untuk menentukan hubungan utama luaran:
  1. [ForeignKey]
  2. <:> nota:
Setiap entiti pasukan mesti mempunyai dua perlawanan, homematches dan jam tangan.
<code class="language-csharp">public class Match
{
    public int MatchId { get; set; }
    public int HomeTeamId { get; set; }
    public int GuestTeamId { get; set; }
    public float HomePoints { get; set; }
    public float GuestPoints { get; set; }
    public DateTime Date { get; set; }

    public virtual Team HomeTeam { get; set; }
    public virtual Team GuestTeam { get; set; }
}

public class Context : DbContext
{
    // ...

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Match>()
                    .HasRequired(m => m.HomeTeam)
                    .WithMany(t => t.HomeMatches)
                    .HasForeignKey(m => m.HomeTeamId)
                    .WillCascadeOnDelete(false);

        modelBuilder.Entity<Match>()
                    .HasRequired(m => m.GuestTeam)
                    .WithMany(t => t.AwayMatches)
                    .HasForeignKey(m => m.GuestTeamId)
                    .WillCascadeOnDelete(false);
    }
}</code>
Salin selepas log masuk

Gunakan API yang fasih untuk menentukan hubungan utama luaran, kerana dalam kejadian ini, lalai yang dipersetujui oleh kunci utama pemetaan tidak mencukupi. Lumpuhkan pemadaman kelas untuk mengelakkan pemadaman yang tidak disengajakan oleh pasukan yang dirujuk oleh pelbagai perlawanan.

  • Jawapan yang disemak ini mengekalkan imej asal dan bahasa yang lebih ringkas dan lebih jelas sambil mengekalkan maklumat teras

Atas ialah kandungan terperinci Bagaimana untuk memodelkan hubungan perlawanan pasukan dengan dua kunci asing dari jadual yang sama dalam kod rangka entiti terlebih dahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan