Sepertinya saya harus mengambil objek sebelum saya menghapusnya dengan kerangka entitas seperti di bawah ini
var customer = context.Customers.First(c => c.Id == 1);
context.DeleteObject(customer);
context.Savechanges();
Jadi saya perlu mengakses database dua kali. Apakah ada cara yang lebih mudah?
entity-framework
entity
Jeff
sumber
sumber
Jawaban:
Dalam Entity Framework 6 tindakan hapus adalah
Remove
. Berikut ini contohnyasumber
Attach
? Mengapa tidak adilRemove
danSaveChanges
?Sama seperti @Nix dengan sedikit perubahan untuk diketik dengan kuat:
Jika Anda tidak ingin menanyakannya, buat saja entitas, lalu hapus.
sumber
Pertanyaan serupa di sini .
Dengan Entity Framework ada EntityFramework-Plus (pustaka ekstensi).
Tersedia di NuGet. Kemudian Anda bisa menulis sesuatu seperti:
Ini juga berguna untuk penghapusan massal.
sumber
Jika Anda tidak ingin menanyakannya, buat saja entitas, lalu hapus.
sumber
Saya menggunakan kode berikut di salah satu proyek saya:
Dengan cara ini, ini akan meminta database dua kali hanya jika terjadi pengecualian saat mencoba menghapus item dengan ID yang ditentukan. Kemudian jika item tidak ditemukan, itu mengembalikan pesan yang berarti; jika tidak, itu hanya mengembalikan pengecualian (Anda dapat menangani ini dengan cara yang lebih sesuai dengan kasus Anda menggunakan blok tangkapan yang berbeda untuk jenis pengecualian yang berbeda, tambahkan lebih banyak pemeriksaan khusus menggunakan blok if dll.).
[Saya menggunakan kode ini dalam proyek MVC .Net Core / .Net Core dengan Entity Framework Core.]
sumber
Kueri sql mentah adalah cara tercepat yang saya kira
sumber
Jawaban dwkd sebagian besar bekerja untuk saya di inti Kerangka Kerja Entitas, kecuali ketika saya melihat pengecualian ini:
Untuk menghindari pengecualian, saya memperbarui kode:
sumber
Versi yang lebih kecil (jika dibandingkan dengan yang sebelumnya):
sumber
Jawaban ini sebenarnya diambil dari mata kuliah Scott Allen yang bertajuk ASP.NET MVC 5 Fundamentals. Saya pikir saya akan berbagi karena menurut saya ini sedikit lebih sederhana dan lebih intuitif daripada jawaban mana pun di sini. Perhatikan juga menurut Scott Allen dan pelatihan lain yang telah saya lakukan, metode temukan adalah cara yang dioptimalkan untuk mengambil sumber daya dari database yang dapat menggunakan caching jika sudah diambil. Dalam kode ini, koleksi mengacu pada DBSet objek. Objek dapat berupa tipe objek umum apa pun.
sumber