Tôi luôn tranh luận về tinh thần với chính mình mỗi khi bắt đầu làm việc với một dự án mới và tôi đang thiết kế các POCO của mình. Tôi đã thấy nhiều hướng dẫn / mẫu mã có vẻ ưu tiên các liên kết khóa nước ngoài :
Hiệp hội khóa nước ngoài
public class Order
{
public int ID { get; set; }
public int CustomerID { get; set; } // <-- Customer ID
...
}
Trái ngược với các hiệp hội độc lập :
Hiệp hội độc lập
public class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
Tôi đã làm việc với NHibernate trước đây và sử dụng các liên kết độc lập, không chỉ cảm thấy OO hơn mà còn (với tính năng tải chậm) có lợi thế là cho tôi quyền truy cập vào toàn bộ đối tượng Khách hàng, thay vì chỉ ID của nó. Điều này cho phép tôi, ví dụ, truy xuất một cá thể Order và sau đó thực hiện Order.Customer.FirstName
mà không cần phải thực hiện phép nối một cách rõ ràng, điều này cực kỳ thuận tiện.
Tóm lại, câu hỏi của tôi là:
- Có bất kỳ nhược điểm đáng kể nào trong việc sử dụng các hiệp hội độc lập không? và ...
- Nếu không có bất kỳ, lý do sử dụng các liên kết khóa nước ngoài là gì?