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 estrangeiras
public class Order
{
    public int ID { get; set; }
    public int CustomerID { get; set; } // <-- Customer ID
    ...
}

Em oposição a associações independentes:

Associação independente
public 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

questionAnswers(4)

yourAnswerToTheQuestion