Ho un dibattito mentale con me stesso ogni volta che inizio a lavorare su un nuovo progetto e sto progettando i miei POCO. Ho visto molti tutorial / esempi di codice che sembrano favorire le associazioni di chiavi esterne :
Associazione chiave esterna
public class Order
{
public int ID { get; set; }
public int CustomerID { get; set; } // <-- Customer ID
...
}
A differenza delle associazioni indipendenti :
Associazione indipendente
public class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
Ho lavorato con NHibernate in passato e ho utilizzato associazioni indipendenti, che non solo sembrano più OO, ma hanno anche (con il caricamento lento) il vantaggio di darmi accesso all'intero oggetto Cliente, invece del suo ID. Questo mi consente, ad esempio, di recuperare un'istanza di Order e quindi di fare a Order.Customer.FirstName
meno di dover eseguire un join esplicitamente, il che è estremamente conveniente.
Quindi, per ricapitolare, le mie domande sono:
- Ci sono svantaggi significativi nell'utilizzo di associazioni indipendenti? e...
- Se non ce ne sono, quale sarebbe la ragione per utilizzare le associazioni di chiavi esterne?