Rangka Kerja Entiti menyediakan berbilang pendekatan untuk mengurus senario "kemas kini baris jika wujud, jika tidak masukkan baris baharu".
Dilampirkan Objek:
Jika entiti yang diubah suai sudah dilampirkan pada konteks, ia boleh dikemas kini terus:
if (context.ObjectStateManager.GetObjectStateEntry(myEntity).State == EntityState.Detached) { context.MyEntities.AddObject(myEntity); } // Attached object tracks modifications automatically context.SaveChanges();
Objek Tidak Dilampirkan dengan Kunci Diketahui:
Jika entiti mempunyai kunci bukan sifar (menunjukkan entri sedia ada), ia boleh dilampirkan dan diubah suai seperti berikut:
if (myEntity.Id != 0) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
Objek Tidak Dilampirkan dengan Kunci Tidak Diketahui:
Dalam kes di mana kunci tidak diketahui, pertanyaan carian boleh dilakukan untuk tentukan kewujudan:
var id = myEntity.Id; if (context.MyEntities.Any(e => e.Id == id)) { context.MyEntities.Attach(myEntity); context.ObjectStateManager.ChangeObjectState(myEntity, EntityState.Modified); } else { context.MyEntities.AddObject(myEntity); } context.SaveChanges();
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Logik Upsert Menggunakan Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!