Apa yang dimaksud dengan Entity Framework Core?
Sebagian besar aplikasi web nontrivial perlu menjalankan operasi pada data dengan andal, seperti membuat, membaca, memperbarui, dan menghapus (CRUD). Mereka juga perlu mempertahankan perubahan apa pun yang dilakukan oleh operasi ini di antara mulai ulang aplikasi. Meskipun ada berbagai opsi untuk menyimpan data dalam aplikasi .NET, Entity Framework (EF) Core adalah solusi yang mudah digunakan dan sangat cocok untuk banyak aplikasi .NET.
Memahami EF Core
EF Core adalah teknologi akses data yang ringan, dapat diperluas, sumber terbuka, dan lintas platform untuk aplikasi .NET.
EF Core dapat berfungsi sebagai pemeta hubungan objek, yang:
- Memungkinkan pengembang .NET bekerja dengan database menggunakan objek .NET.
- Menghilangkan kebutuhan akan sebagian besar kode akses data yang biasanya perlu ditulis.
EF Core mendukung sejumlah besar database populer, termasuk SQLite, MySQL, PostgreSQL, Oracle, dan Microsoft SQL Server.
Model
Dengan EF Core, akses data dilakukan dengan menggunakan model. Model terdiri dari kelas entitas dan objek konteks yang mewakili sesi dengan database. Objek konteks memungkinkan kueri dan penyimpanan data.
Kelas entitas
Dalam skenario ini, Anda menerapkan API manajemen toko pizza, sehingga Anda menggunakan Pizza
kelas entitas. Pizza di toko Anda memiliki nama dan deskripsi. Mereka juga memerlukan ID untuk memungkinkan API dan database mengidentifikasinya. Kelas Pizza
entitas yang Anda gunakan dalam aplikasi mengidentifikasi pizza:
namespace PizzaStore.Models
{
public class Pizza
{
public int Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}
}
Kelas konteks
Aplikasi ini hanya memiliki satu kelas entitas, tetapi sebagian besar aplikasi memiliki beberapa kelas entitas. Kelas konteks bertanggung jawab untuk mengkueri dan menyimpan data ke kelas entitas Anda, dan untuk membuat dan mengelola koneksi database.
Melakukan operasi CRUD dengan EF Core
Setelah EF Core dikonfigurasi, Anda dapat menggunakannya untuk melakukan operasi CRUD pada kelas entitas. Kemudian, Anda dapat mengembangkan terhadap kelas C#, mendelegasikan operasi database ke kelas konteks. Penyedia database secara bergiliran menerjemahkannya ke bahasa kueri khusus database. Contohnya adalah SQL untuk database hubungan. Kueri selalu dijalankan terhadap database, meskipun entitas yang ditampilkan dalam hasil sudah ada dalam konteks.
Mengkueri data
Objek konteks mengekspos kelas pengumpulan untuk setiap jenis entitas. Dalam contoh sebelumnya, kelas konteks mengekspos kumpulan objek Pizza
sebagai Pizzas
. Mengingat bahwa kami memiliki instans kelas konteks, Anda dapat mengkueri database untuk semua pizza:
var pizzas = await db.Pizzas.ToListAsync();
Menyisipkan data
Anda dapat menggunakan objek konteks yang sama untuk menyisipkan pizza baru:
await db.pizzas.AddAsync(
new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });
Menghapus data
Operasi penghapusan sangat mudah. Operasi ini hanya memerlukan ID item yang akan dihapus:
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
db.pizzas.Remove(pizza);
Memperbarui data
Demikian pula, Anda dapat memperbarui pizza yang ada:
int id = 1;
var updatepizza = new Pizza { Name = "Pineapple", Description = "Ummmm?" };
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
pizza.Desription = updatepizza.Description;
pizza.Name = updatepizza.Name;
await db.SaveChangesAsync();
Menggunakan database dalam memori EF Core
EF Core menyertakan penyedia database dalam memori yang dapat digunakan untuk menguji aplikasi Anda. Penyedia database dalam memori berguna untuk pengujian dan pengembangan, tetapi tidak boleh digunakan dalam produksi. Di unit berikutnya, Anda akan menggunakan penyedia database dalam memori untuk membuat database dan melakukan operasi CRUD di atasnya.