Я мысленно спорим с собой каждый раз, когда начинаю работать над новым проектом и разрабатываю свои 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
без необходимости явно выполнять соединение, что чрезвычайно удобно.
Итак, резюмируя, мои вопросы: