Code First: Независимые ассоциации против ассоциаций с иностранным ключом?

Я мысленно спорим с собой каждый раз, когда начинаю работать над новым проектом и разрабатываю свои POCO. Я видел много руководств / примеров кода, которые, кажется, отдают предпочтение ассоциациям внешнего ключа :

Ассоциация внешнего ключа

public class Order
{
    public int ID { get; set; }
    public int CustomerID { get; set; } // <-- Customer ID
    ...
}

В отличие от независимых ассоциаций :

Независимая ассоциация

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

] Я работал с NHibernate в прошлом и использовал независимые ассоциации, которые не только больше ощущаются ОО, но также (с отложенной загрузкой) имеют то преимущество, что предоставляют мне доступ ко всему объекту Customer, а не только к его идентификатору. Это позволяет мне, например, получить экземпляр Order, а затем выполнить Order.Customer.FirstName без необходимости явно выполнять соединение, что чрезвычайно удобно.

Итак, резюмируя, мои вопросы:

  1. Есть ли существенные недостатки в используя независимые ассоциации? и ...
  2. Если их нет, то что может быть причиной использования ассоциаций внешнего ключа?
100
задан Daniel Liuzzi 12 March 2011 в 13:13
поделиться