每当我开始从事一个新项目并设计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对象而不只是ID的优点。例如,这使我可以检索Order实例,然后执行操作Order.Customer.FirstName
而不必显式进行联接,这非常方便。
回顾一下,我的问题是:
- 使用独立关联是否有任何重大缺点?和...
- 如果没有,根本不使用外键关联的原因是什么?