Apa yang dimaksud dengan Entity Framework Core?

Selesai

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.