Código Primeiro: Associações Independentes vs. Associações de Chaves Estrangeira
Eu tenho um debate mental sempre que começo a trabalhar em um novo projeto e estou criando meus POCOs. Eu já vi muitos tutoriais / exemplos de código que parecem favorecer associações-chave estrangeiras:
Associação de chaves estrangeiraspublic class Order
{
public int ID { get; set; }
public int CustomerID { get; set; } // <-- Customer ID
...
}
Em oposição a associações independentes:
Associação independentepublic class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
Eu trabalhei com o NHibernate no passado e usei associações independentes, que não apenas parecem mais OO, mas também (com carregamento lento) têm a vantagem de me dar acesso a todo o objeto Customer, em vez de apenas seu ID. Isso me permite, por exemplo, recuperar uma instância de Order e depois fazerOrder.Customer.FirstName
sem ter que fazer uma junção explicitamente, o que é extremamente convenient
ara recapitular, minhas perguntas são:
Existem desvantagens significativas no uso de associações independentes? e..Se não houver, qual seria o motivo de usar associações de chaves estrangeira