Rumah >pembangunan bahagian belakang >C++ >Rangka Kerja Entiti 4: Bila hendak menggunakan `AttachObject` lwn. `AddObject`?

Rangka Kerja Entiti 4: Bila hendak menggunakan `AttachObject` lwn. `AddObject`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-10 14:02:42382semak imbas

Entity Framework 4: When to Use `AttachObject` vs. `AddObject`?

Rangka Kerja Entiti 4: Menguasai AddObject dan Attach

Penggunaan Rangka Kerja Entiti yang berkesan bergantung pada pemahaman peranan berbeza ObjectSet.AddObject dan ObjectSet.Attach. Semasa AddObject memasukkan entiti baharu, Attach mengurus entiti sedia ada. Walau bagaimanapun, situasi yang memerlukan Attach boleh diubah.

Satu kes penggunaan utama untuk Attach melibatkan entiti yang diasingkan daripada konteks. Ini sering berlaku selepas mendapatkan semula entiti dan seterusnya menutup konteks. Untuk melibatkan semula entiti ini untuk pengubahsuaian, gunakan Attach:

<code class="language-csharp">var existingPerson = new Person { Name = "Joe Bloggs" };
ctx.Persons.Attach(existingPerson);
existingPerson.Name = "Joe Briggs";
ctx.SaveChanges();</code>

Ini menjana pernyataan UPDATE, mengelakkan pengambilan semula pangkalan data yang berlebihan.

Satu lagi aplikasi berharga Attach ialah menghubungkan entiti sedia ada yang dilampirkan konteks yang tidak mempunyai hubungan automatik. Pertimbangkan entiti Person dengan Addresses sifat navigasi (kumpulan Address entiti). Jika anda telah memuatkan kedua-dua objek Person dan Address tetapi hubungannya tidak diwujudkan, Attach menyediakan penyelesaian:

<code class="language-csharp">var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name == "Joe Bloggs");
var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID);
existingPerson.Addresses.Attach(myAddress);
ctx.SaveChanges();</code>

Di sini, Attach mengemas kini perhubungan tanpa mengubah suai entiti itu sendiri.

Atas ialah kandungan terperinci Rangka Kerja Entiti 4: Bila hendak menggunakan `AttachObject` lwn. `AddObject`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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