Perbandingan kaedah pemadaman entiti dalam Rangka Kerja Entiti
Rangka Kerja Entiti menyediakan dua kaedah utama untuk memadamkan item daripada pangkalan data: EntityCollection.Remove()
dan ObjectContext.DeleteObject()
. Walaupun kedua-duanya memadamkan item daripada pangkalan data, fungsi dan penggunaannya berbeza.
EntityCollection.Remove()
EntityCollection.Remove()
Padamkan hubungan antara entiti induk dan entiti anak. Kaedah ini menandakan perhubungan sebagai dipadamkan dalam konteks. Jika entiti anak itu sendiri telah dipadamkan, tindakan tepat yang diambil apabila SaveChanges
dipanggil bergantung pada sifat perhubungan:
DeleteObject()
pada entiti anak. Jika tidak, pengecualian pelanggaran kekangan rujukan akan terhasil. SaveChanges
akan menghantar pernyataan SQL DELETE ke pangkalan data, memadamkan entiti anak jika tiada kekangan rujukan dilanggar. ObjectContext.DeleteObject()
ObjectContext.DeleteObject()
Menandai entiti sebagai dipadamkan dalam konteks. Ini menetapkan EntityState
entiti kepada Deleted
, membezakannya daripada entiti lain yang mungkin mempunyai perhubungan yang ditandakan sebagai dipadam tetapi tidak dipadamkan sendiri. Memanggil DeleteObject()
selepas menggunakan SaveChanges
akan mencetuskan pernyataan SQL DELETE untuk memadamkan entiti daripada pangkalan data, dengan syarat tiada kekangan rujukan dilanggar.
Nilai pulangan
Adalah penting untuk ambil perhatian bahawa EntityCollection.Remove()
mengembalikan nilai bool yang menunjukkan sama ada perhubungan telah berjaya dipadamkan, manakala ObjectContext.DeleteObject()
mengembalikan tidak sah.
Cadangan penggunaan
Kaedah mana yang hendak digunakan bergantung pada hasil yang diinginkan. EntityCollection.Remove()
terpakai jika matlamatnya adalah untuk memadamkan hubungan antara dua entiti tanpa memadamkan entiti anak. Untuk memadamkan entiti itu sendiri, ObjectContext.DeleteObject()
hendaklah digunakan, terutamanya jika kekangan rujukan mungkin dilanggar.
Atas ialah kandungan terperinci Rangka Kerja Entiti: `EntityCollection.Remove()` lwn. `ObjectContext.DeleteObject()` – Kaedah Mana Yang Perlu Saya Gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!