Dưới đây là tình hình của tôi ..
Giả sử bạn có các đối tượng mô hình sau đây, đại diện cho bảng duy nhất trên riêng của họ:
Phim [Movie_Id, Tiêu đề, Đánh giá, ..]
diễn viên [Actor_Id, FirstName, LastName, ..]
Giám đốc [Director_Id, FirstName, LastName, ..]
Và một thực thể/table gọi là "Đề xuất", mà lại giới thiệu các đề xuất giữa những người dùng trong một trang web. Ý tưởng là đề xuất có thể thuộc bất kỳ loại nào, nghĩa là ai đó giới thiệu một diễn viên hoặc người nào đó đề xuất một bộ phim. Về cơ bản, bảng nên tìm một cái gì đó như thế này:
Khuyến nghị [Recommendation_Id, object_id, object_type, ..]
Và đây là những gì tôi đang mắc kẹt vào. Làm thế nào tôi có thể lập bản đồ các mối quan hệ này trong nHibernate với Fluent? Ý tôi là .. trong khi ánh xạ, tôi không thể chỉ định Loại (có liên quan đến bảng) do nguyên nhân được xác định trong thời gian chạy, nhưng tôi không thể chỉ dựa vào Id do chính nó không thể ngụ ý bảng nào thuộc về .
Ví dụ, hãy tưởng tượng kỷ lục này trên bàn nghị:
Recommendation_Id - object_id - object_type
83001--401--- "M"
Về cơ bản tôi đang lưu trữ một định danh char (trong trường hợp này " M "là viết tắt của bảng" Phim ") để biết bảng nào thuộc đối tượng Object_Id. Tôi không thể chỉ lưu trữ Object_Id mà không có Object_Type ..
Mapping để nhiều bảng với thành thạo NHibernate
Như ý kiến cuối cùng, tôi muốn thêm rằng tôi đã nhìn thấy tất cả bảng mỗi lớp, bảng mỗi phân lớp, bảng mỗi lớp cụ thể ví dụ, nhưng tôi tin rằng không ai trong số này phù hợp trong tình huống này, như Movies_Id, Actors_Id, Directors_Id, ... đều khác nhau giữa chúng, như vậy là Recommendations_Id. Ý tôi là, không có thừa kế lớp con cơ sở ở đây, họ không chia sẻ Id của tất cả ..
Tôi hy vọng tôi làm cho bản thân mình rõ ràng. Cảm ơn trước.
Cần lưu ý rằng thông thạo nHibernate hiện không hỗ trợ nhiều tùy chọn mà tôi cho là sẽ thực hiện. Trừ khi tôi sai, hãy lưu đề xuất khi bạn cập nhật phim sẽ không xảy ra liền mạch.Câu trả lời của Daniel gần hơn với bất cứ điều gì khác tôi có thể tìm thấy tho; o) – JasonCoder
Nếu bạn muốn ánh xạ phía bên kia của mối quan hệ 'any', như trong' Movie.Recommendations', tôi tin rằng bạn có thể làm điều này với một ' -to-many' và thuộc tính 'where =" Object_Type = 'M' "' trên bộ sưu tập mà bạn có thể làm với Fluent NHibernate. –