Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Cascade Delete untuk Hubungan Satu-ke-Sifar-atau-Satu dalam Rangka Kerja Entiti?

Bagaimana untuk Melaksanakan Cascade Delete untuk Hubungan Satu-ke-Sifar-atau-Satu dalam Rangka Kerja Entiti?

Barbara Streisand
Barbara Streisandasal
2025-01-11 13:57:42931semak imbas

How to Implement Cascade Delete for One-to-Zero-or-One Relationships in Entity Framework?

Pemadaman berperingkat satu kepada sifar atau satu perhubungan dalam Rangka Kerja Entiti

Dalam senario yang saya temui baru-baru ini, hubungan satu kepada sifar atau satu telah diwujudkan antara dua kelas POCO Pengguna dan Butiran Pengguna. Walau bagaimanapun, apabila cuba memadamkan rekod Pengguna, kekangan kunci asing dalam UserDetail menghalang rekod Pengguna daripada dipadamkan kerana kekurangan pemadaman bertingkat.

Untuk menyelesaikan masalah ini, Fluent API mesti digunakan dalam DbContext. Coretan kod berikut harus ditambah:

<code class="language-csharp">protected override void OnModelCreating(DbModelBuilder modelBuilder)
{   
    modelBuilder.Entity<User>()
        .HasOptional(a => a.UserDetail)
        .WithOptionalDependent()
        .WillCascadeOnDelete(true);
}</code>

Perhubungan satu-ke-sifar atau satu antara Pengguna dan Butiran Pengguna diwujudkan menggunakan kaedah HasOptional() dan WithOptionalDependent(). Kaedah WillCascadeOnDelete(true) kemudiannya membolehkan pemadaman berlatarkan untuk perhubungan ini.

Dengan perubahan ini dilaksanakan, pemadaman rekod Pengguna kini secara automatik akan mencetuskan pemadaman rekod UserDetail yang berkaitan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Cascade Delete untuk Hubungan Satu-ke-Sifar-atau-Satu dalam Rangka Kerja 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