Saya memiliki tabel SQL Server di Entity Framework bernama employ
dengan satu kolom kunci bernama ID
.
Bagaimana cara menghapus satu catatan dari tabel menggunakan Kerangka Entity?
c#
sql-server
entity-framework
pengguna2497476
sumber
sumber
Jawaban:
Itu tidak perlu untuk query objek terlebih dahulu, Anda dapat melampirkannya ke konteks dengan id-nya. Seperti ini:
Atau, Anda dapat mengatur status entri terlampir untuk dihapus:
sumber
ctx.Entry(employer).State = EntityState.Deleted
Anda dapat menggunakan
SingleOrDefault
untuk mendapatkan satu objek yang cocok dengan kriteria Anda, dan kemudian meneruskannya keRemove
metode tabel EF Anda.sumber
sumber
FirstOrDefault
berbahaya. Entah Anda tahu hanya ada satu (jadi gunakanSingleOrDefault
), atau ada lebih dari satu, dan itu harus dilakukan dalam satu lingkaran.sumber
First
berbahaya. Entah Anda tahu hanya ada satu (jadi gunakanSingle
), atau ada lebih dari satu, dan itu harus dilakukan dalam satu lingkaran.Saya menggunakan kerangka kerja entitas dengan LINQ. Kode berikut sangat membantu saya;
1- Untuk banyak catatan
2- Untuk catatan tunggal
sumber
SingleOrDefault
bukanFirstOrDefault
?Persetujuan yang lebih umum
sumber
Dengan Entity Framework 6, Anda bisa menggunakan
Remove
. Juga merupakan taktik yang baik untuk digunakanusing
untuk memastikan koneksi Anda ditutup.sumber
Hanya ingin menyumbangkan tiga metode yang telah saya bolak-balik.
Metode 1:
Metode 2:
Salah satu alasan mengapa saya lebih suka menggunakan Metode 2 adalah karena dalam hal mengatur EF atau EFCore
QueryTrackingBehavior.NoTracking
, itu lebih aman untuk dilakukan.Lalu ada Metode 3:
Ini menggunakan pendekatan penghapusan lunak dengan menetapkan
DeletedOn
properti catatan , dan masih dapat menyimpan catatan untuk digunakan di masa depan, apa pun itu. Pada dasarnya, menaruhnya di Recycle Bin .Juga, sehubungan dengan Metode 3 , alih-alih mengatur seluruh catatan yang akan dimodifikasi:
Anda juga hanya akan mengatur kolom yang
DeletedOn
dimodifikasi:sumber
Apa pendapat Anda tentang ini, sederhana atau tidak, Anda juga dapat mencoba ini:
sumber
Untuk DAO generik pekerjaan saya finnaly ini:
sumber
Menggunakan EntityFramework.Plus bisa menjadi pilihan:
Lebih banyak contoh tersedia di sini
sumber
kamu dapat melakukannya hanya seperti ini
model
lihat dari mana Anda akan menyebutnya
Saya harap ini akan mudah bagi Anda untuk mengerti
sumber
Anda dapat melakukan sesuatu seperti ini di klik atau sel acara klik kotak Anda (jika Anda menggunakannya)
Kemudian lakukan sesuatu seperti ini di Tombol Hapus Anda:
Atau, Anda bisa menggunakan Kueri LINQ alih-alih menggunakan LINQ Ke Entitas Kueri:
mempekerjakan.Id digunakan sebagai parameter pemfilteran yang sudah diteruskan dari SelDoubleClick Peristiwa DataGridView Anda.
sumber
Inilah cara yang aman:
Di sini Anda dapat menumpuk semua perubahan yang Anda inginkan, sehingga Anda dapat melakukan serangkaian penghapusan sebelum SaveChanges dan Commit, sehingga mereka akan diterapkan hanya jika mereka semua berhasil.
sumber
Cara terbaik adalah memeriksa dan kemudian menghapus
sumber