Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk mengendalikan pelbagai kunci asing dari jadual yang sama dalam kod kerangka entiti terlebih dahulu?

Bagaimana untuk mengendalikan pelbagai kunci asing dari jadual yang sama dalam kod kerangka entiti terlebih dahulu?

Susan Sarandon
Lepaskan: 2025-01-29 08:18:12
asal
408 orang telah melayarinya

How to Handle Multiple Foreign Keys from the Same Table in Entity Framework Code First?

Kod Rangka Kerja Fizikal lebih disukai: mengendalikan kekunci luar pelbagai dari jadual yang sama

Dalam Kod Rangka Kerja Fizikal Pertama, anda mungkin menghadapi hubungan yang perlu ditubuhkan di antara dua entiti ini. Ini amat mencabar untuk pemula.

Memandangkan model yang melibatkan pasukan dan permainan, masing -masing mempunyai pasukan rumah dan pasukan tetamu. Walau bagaimanapun, cuba menggunakan kekunci luaran tradisional untuk membuat model ini boleh menyebabkan kesilapan rujukan kitaran.

memahami masalah

Seperti yang ditunjukkan dalam serpihan kod asal, apabila kunci luar ditakrifkan dalam entiti perlawanan, anda sebenarnya membuat sepasang pelbagai hubungan untuk atribut hometeam dan tamu antara perlawanan dan pasukan. Walau bagaimanapun, tetapan ini akan menyebabkan rujukan pekeliling, kerana pasukan juga rujukan sepadan melalui kunci luaran. Kitaran ini melanggar kekangan pangkalan data.

Penyelesaian: Gunakan atribut navigasi Tetapkan dan ModelBuilder Fluent API

Untuk menyelesaikan masalah ini, anda boleh menggunakan model yang lebih baik yang menggunakan koleksi atribut navigasi dan menggunakan ModelBuilder Fluent API dengan kerangka fizikal. Ini adalah contoh:

Dalam kelas pasukan, tentukan dua atribut navigasi koleksi berasingan:

Dalam kelas perlawanan, padamkan atribut asing:

Di kelas DBContext, tulis semula kaedah onmodelcreating dan gunakan hubungan konfigurasi API yang fasih:

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

Dalam model yang dikemas kini ini, entiti perlawanan mempunyai dua atribut utama luaran, tetapi tidak ada atribut navigasi. Sebaliknya, atribut navigasi ditakrifkan pada entiti pasukan dan membolehkan melintasi pasukan untuk dipadankan. Proses penciptaan model menggunakan API yang fasih untuk menyatakan secara jelas hubungan untuk mencegah rujukan peredaran. Di samping itu, atribut Willcascadeondelete ditetapkan kepada palsu untuk mencegah penghapusan kelas, yang tidak disyorkan dalam adegan ini.

<code>public int HomeTeamId { get; set; }
public int GuestTeamId { get; set; }</code>
Salin selepas log masuk
Dengan mengikuti kaedah ini, anda boleh berjaya membuat model dengan pelbagai ikatan luaran yang menunjuk pada jadual yang sama dalam kod kerangka fizikal terlebih dahulu.

Atas ialah kandungan terperinci Bagaimana untuk mengendalikan pelbagai kunci asing dari jadual yang sama dalam kod kerangka entiti terlebih dahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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