Entity Framework Core: Relationship
Penjelasan
EF Core mendeteksi relasi lewat KONVENSI: properti bertipe koleksi (List<Produk>) di satu Entity dan properti tunggal + foreign key (KategoriId, Kategori) di Entity lain otomatis dikenali sebagai relasi one-to-many, TANPA perlu atribut/konfigurasi eksplisit untuk kasus sederhana.
Contoh Konsep
public class Kategori
{
public int Id { get; set; }
public string Nama { get; set; } = "";
public List<Produk> Produk { get; set; } = new(); // navigation property
}
public class Produk
{
public int Id { get; set; }
public string Nama { get; set; } = "";
public int KategoriId { get; set; } // foreign key, dikenali otomatis dari konvensi nama
public Kategori? Kategori { get; set; }
}
// Pemakaian (WAJIB .Include() supaya relasi ikut di-load):
var kategori = await context.Kategori
.Include(k => k.Produk)
.FirstOrDefaultAsync(k => k.Id == 1);
Praktikum
Buat relasi: Entity Penulis dengan List<Artikel> Artikel (navigation property), dan Entity Artikel dengan PenulisId (int) dan Penulis? Penulis. Tulis contoh query dengan .Include(a => a.Penulis) yang menampilkan nama penulis dari satu artikel.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Lupa .Include() saat query membuat navigation property-nya TETAP NULL/KOSONG (disebut "lazy loading dimatikan" secara default di EF Core modern) — beda dengan Eloquent Laravel yang punya lazy loading otomatis (walau sama-sama TIDAK direkomendasikan karena N+1 query), EF Core mengharuskan eager loading eksplisit lewat .Include().