Cả hai ánh xạ sẽ tạo ra chính xác những giản đồ cơ sở dữ liệu cùng với một tổ chức phi nullable nước ngoài chủ chốt SomethingId
và một ràng buộc tham chiếu giữa hai bảng có liên quan.
Ánh xạ đầu tiên với MapKey
được sử dụng khi bạn không muốn có khóa ngoài làm thuộc tính trong lớp mô hình của mình. Loại liên kết trong trường hợp này được gọi là Hiệp hội độc lập. Bạn sẽ áp dụng ánh xạ thứ hai với HasForeignKey
khi khóa ngoài là thuộc tính trong mô hình. Loại này được gọi là Hiệp hội khóa nước ngoài.
Trong nhiều trường hợp, dễ dàng hơn khi làm việc với Hiệp hội khóa ngoại, nhưng nhiều người cho rằng nó ít sạch hơn để có một tạo phẩm quan hệ (khóa ngoại) trong thế giới đối tượng và thích Hiệp hội độc lập hơn.
Dưới đây là một số tài liệu tham khảo về hai loại của các hiệp hội và Ưu điểm của họ và Nhược điểm:
"Nhiều người nghĩ rằng một ánh xạ đối tượng-quan hệ công cụ là giả sử để giải quyết sự không phù hợp của đối tượng-quan hệ trở kháng hơn là buộc hoặc thậm chí khuyến khích bạn làm cho mô hình đối tượng của bạn trông giống như nó là d esigned cụ thể xung quanh cách dữ liệu được tiếp tục tồn tại ". Ở đó, tôi đã sửa nó cho bạn. –