Study
ASP.NET Core

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.

Editor Latihan

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().