Rumah >pembangunan bahagian belakang >C++ >Rangka Kerja Entiti: `Remove()` vs. `DeleteObject()` – Bila hendak menggunakan Mana?
Perbezaan dan penggunaan .Remove() dan .DeleteObject() dalam Rangka Kerja Entiti
Apabila menggunakan Rangka Kerja Entiti, anda mungkin menghadapi dua kaedah berbeza untuk memadam item pangkalan data: EntityCollection.Remove()
dan ObjectContext.DeleteObject()
. Walaupun kedua-duanya bertujuan untuk mengalih keluar entiti daripada pangkalan data, fungsi dan ciri mereka adalah berbeza.
EntityCollection.Remove()
Kaedah ini mengalih keluar perhubungan antara entiti induk dan entiti anak. Dalam erti kata lain, ia menandakan perhubungan sebagai dipadamkan dalam konteks tanpa benar-benar memadamkan entiti anak itu sendiri. EntityState
entiti kanak-kanak kekal tidak berubah.
Bergantung pada hubungan antara entiti induk dan entiti anak, kesan penggunaan SaveChanges
selepas memanggil .Remove()
akan berbeza:
SaveChanges
. ObjectContext.DeleteObject()
Kaedah ini menandakan entiti yang ditentukan dalam ObjectContext
sebagai dipadamkan. EntityState
entiti ditetapkan dengan segera kepada Deleted
. Selepas memanggil SaveChanges
, EF akan menghantar pernyataan SQL DELETE
ke pangkalan data. Jika semua syarat yang diperlukan dipenuhi (contohnya, tiada kekangan rujukan dilanggar), entiti itu dialih keluar daripada pangkalan data.
Bila hendak menggunakan kaedah yang mana
SaveChanges
. Nota lain
.Remove()
mengembalikan nilai Boolean yang menunjukkan kejayaan atau kegagalan, manakala .DeleteObject()
mengembalikan tidak sah. .Remove()
boleh menyebabkan pelanggaran kekangan selepas SaveChanges
. .DeleteObject()
Tandai entiti sebagai dipadamkan dengan jelas, pastikan ia dialih keluar daripada pangkalan data. Atas ialah kandungan terperinci Rangka Kerja Entiti: `Remove()` vs. `DeleteObject()` – Bila hendak menggunakan Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!