Code primero: ¿asociaciones independientes vs. asociaciones de claves extranjeras?

Tengo un debate mental conmigo mismo cada vez que comienzo a trabajar en un nuevo proyecto y estoy diseñando mis POCO. He visto muchos tutoriales / ejemplos de código que parecen favorecer a asociaciones de claves extranjeras:

Asociación de claves extranjeras
public class Order
{
    public int ID { get; set; }
    public int CustomerID { get; set; } // <-- Customer ID
    ...
}

Opuesto a asociaciones independientes:

Asociación independiente
public class Order
{
    public int ID { get; set; }
    public Customer Customer { get; set; } // <-- Customer object
    ...
}

He trabajado con NHibernate en el pasado, y he usado asociaciones independientes, que no solo se sienten más OO, sino que también (con carga lenta) tienen la ventaja de darme acceso a todo el objeto Cliente, en lugar de solo su ID. Esto me permite, por ejemplo, recuperar una instancia de Order y luego hacerOrder.Customer.FirstName sin tener que hacer una unión explícitamente, lo cual es extremadamente conveniente.

ara resumir, mis preguntas son:

¿Existen desventajas significativas en el uso de asociaciones independientes? y.. Si no hay ninguno, ¿cuál sería la razón para usar asociaciones de claves externas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta