Saya memiliki debat mental dengan diri saya sendiri setiap kali saya mulai mengerjakan proyek baru dan saya merancang POCO saya. Saya telah melihat banyak tutorial / contoh kode yang tampaknya mendukung asosiasi kunci asing :
Asosiasi kunci asing
public class Order
{
public int ID { get; set; }
public int CustomerID { get; set; } // <-- Customer ID
...
}
Berbeda dengan asosiasi independen :
Asosiasi independen
public class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
Saya telah bekerja dengan NHibernate di masa lalu, dan menggunakan asosiasi independen, yang tidak hanya terasa lebih OO, tetapi juga (dengan pemuatan lambat) memiliki keuntungan untuk memberi saya akses ke seluruh objek Pelanggan, bukan hanya ID-nya. Ini memungkinkan saya, misalnya, mengambil instance Order dan kemudian melakukannya Order.Customer.FirstName
tanpa harus melakukan penggabungan secara eksplisit, yang sangat memudahkan.
Jadi untuk rekap, pertanyaan saya adalah:
- Apakah ada kerugian yang signifikan dalam menggunakan asosiasi independen? dan...
- Jika tidak ada, apa alasan untuk menggunakan asosiasi kunci asing?