Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghalang Rangka Kerja Entiti daripada Objek Kanak-kanak Berterusan?

Bagaimanakah Saya Boleh Menghalang Rangka Kerja Entiti daripada Objek Kanak-kanak Berterusan?

Mary-Kate Olsen
Lepaskan: 2025-01-03 00:14:38
asal
962 orang telah melayarinya

How Can I Prevent Entity Framework from Persisting Child Objects?

Menindas Kegigihan Objek Kanak-kanak dalam Rangka Kerja Entiti

Dalam Rangka Kerja Entiti, secara amnya diandaikan bahawa menyimpan entiti akan mengekalkan objek anaknya secara automatik sebagai baiklah. Walau bagaimanapun, dalam senario tertentu, adalah wajar untuk mencegah tingkah laku ini. Ini amat berguna apabila berurusan dengan data yang diratakan yang mungkin tidak sepadan secara langsung dengan skema pangkalan data.

Mari kita pertimbangkan senario hipotetikal di mana entiti Sekolah mengandungi harta City. Semasa mengisi objek Sekolah daripada fail rata, harta City boleh merujuk jadual carian untuk menentukan lokasi geografi. Walau bagaimanapun, memandangkan takrifan bandar ini sudah wujud dalam pangkalan data, Rangka Kerja Entiti tidak perlu memasukkannya semula apabila menyimpan Sekolah.

Untuk menghalang Rangka Kerja Entiti daripada mengekalkan objek kanak-kanak dalam situasi sedemikian, terdapat dua pendekatan :

Pendekatan 1: Menggunakan EntityState

Satu pendekatan melibatkan menetapkan secara manual EntityState objek kanak-kanak kepada Tidak berubah. Ini mengarahkan Rangka Kerja Entiti untuk mengabaikan objek kanak-kanak semasa operasi simpan. Berikut ialah contoh:

using (var context = new DatabaseContext())
{
    context.Set<School>().Add(newItem);
    // Set the City property to Unchanged
    context.Entry(newItem.City).State = EntityState.Unchanged;
    context.SaveChanges();
}
Salin selepas log masuk

Pendekatan 2: Menggunakan Kunci Asing

Pendekatan yang lebih elegan dan fleksibel ialah menggunakan sifat Kunci Asing dalam definisi entiti anda. Tentukan atribut Kunci Asing pada harta anak untuk menyatakan secara eksplisit hubungannya dengan entiti asing. Contohnya:

public class School
{
    [ForeignKey("City_Id")]
    public City City { get; set; }
    [Required]
    public int City_Id { get; set; }
}
Salin selepas log masuk

Pendekatan ini membolehkan anda menentukan nilai kunci asing secara eksplisit semasa penciptaan objek, memaklumkan Rangka Kerja Entiti bahawa objek anak telah dikekalkan. Harta City boleh diabaikan daripada graf konteks dengan menetapkannya kepada batal apabila menyimpan:

newItem.City = null;
context.Set<School>().Add(newItem);
context.SaveChanges();
Salin selepas log masuk

Dengan menggunakan salah satu daripada pendekatan ini, anda boleh menghalang Rangka Kerja Entiti daripada cuba menyimpan objek kanak-kanak, memastikan bahawa hanya entiti yang diingini diteruskan ke pangkalan data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Rangka Kerja Entiti daripada Objek Kanak-kanak Berterusan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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