Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menghalang Rangka Kerja Entiti daripada Menyimpan Entiti Anak Apabila Menyimpan Entiti Induk?

Bagaimana untuk Menghalang Rangka Kerja Entiti daripada Menyimpan Entiti Anak Apabila Menyimpan Entiti Induk?

Susan Sarandon
Lepaskan: 2025-01-02 13:20:39
asal
380 orang telah melayarinya

How to Prevent Entity Framework from Saving Child Entities When Saving a Parent Entity?

Cara Mencegah Rangka Kerja Entiti daripada Menyimpan Objek Kanak-kanak

Apabila menggunakan Rangka Kerja Entiti, menyimpan entiti mungkin secara tidak sengaja cuba menyelamatkan entiti anak yang berkaitan. Untuk membetulkan perkara ini dan semata-mata mengekalkan entiti yang ditentukan, pertimbangkan pendekatan berikut:

Menggunakan EntityState

Anda boleh menetapkan EntityState objek anak kepada Unchanged, memaklumkan Rangka Kerja Entiti untuk meninggalkannya tidak disentuh:

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

Menggunakan Kunci Asing

Pendekatan yang lebih fleksibel melibatkan memanfaatkan kunci asing. Apabila mentakrifkan entiti, nyatakan sifat kunci asing pada entiti anak dan sifat kunci utama yang sepadan pada entiti induk:

public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class School
{
    public int Id { get; set; }
    public string Name { get; set; }

    [ForeignKey("City_Id")]
    public City City { get; set; }

    [Required]
    public int City_Id { get; set; }
}
Salin selepas log masuk

Semasa memasukkan entiti, tetapkan sifat kunci asing objek anak secara eksplisit dan tetapkan objek induk sifat navigasi kepada null:

    public School Insert(School newItem, int cityId)
    {
        if (cityId <= 0)
        {
            throw new Exception("City ID not provided");
        }

        newItem.City = null;
        newItem.City_Id = cityId;

        using (var context = new DatabaseContext())
        {
            context.Set<School>().Add(newItem);
            context.SaveChanges();
        }
    }
Salin selepas log masuk

Dengan mengikuti teknik ini, anda boleh mengawal kegigihan kanak-kanak objek, memastikan bahawa hanya entiti yang dikehendaki disimpan dan menghalang isu integriti yang berpotensi.

Atas ialah kandungan terperinci Bagaimana untuk Menghalang Rangka Kerja Entiti daripada Menyimpan Entiti Anak Apabila Menyimpan Entiti Induk?. 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