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(); }
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; } }
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(); } }
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!