Ketika saya menyimpan entitas dengan kerangka entitas, saya secara alami berasumsi itu hanya akan mencoba untuk menyimpan entitas yang ditentukan. Namun, entitas juga mencoba menyelamatkan entitas anak entitas tersebut. Ini menyebabkan segala macam masalah integritas. Bagaimana cara memaksa EF untuk hanya menyimpan entitas yang ingin saya simpan dan karena itu mengabaikan semua objek turunan?
Jika saya secara manual menyetel properti ke nol, saya mendapatkan pesan kesalahan "Operasi gagal: Hubungan tidak dapat diubah karena satu atau lebih properti kunci asing tidak dapat dibatalkan." Ini sangat kontraproduktif karena saya menetapkan objek anak ke nol secara khusus sehingga EF akan membiarkannya.
Mengapa saya tidak ingin menyimpan / menyisipkan objek anak?
Karena ini sedang dibahas bolak-balik di komentar, saya akan memberikan beberapa pembenaran mengapa saya ingin objek anak saya dibiarkan sendiri.
Dalam aplikasi yang saya buat, model objek EF tidak dimuat dari database tetapi digunakan sebagai objek data yang saya isi saat mengurai file datar. Dalam kasus objek anak, banyak di antaranya merujuk ke tabel pemeta yang mendefinisikan berbagai properti dari tabel induk. Misalnya, lokasi geografis dari entitas utama.
Karena saya telah mengisi objek ini sendiri, EF mengasumsikan ini adalah objek baru dan perlu disisipkan bersama dengan objek induk. Namun, definisi ini sudah ada dan saya tidak ingin membuat duplikat di database. Saya hanya menggunakan objek EF untuk melakukan pencarian dan mengisi kunci asing di entitas tabel utama saya.
Bahkan dengan objek anak yang merupakan data nyata, saya perlu menyimpan induknya terlebih dahulu dan mendapatkan kunci utama atau EF sepertinya akan membuat kekacauan. Semoga ini memberi penjelasan.