這裏是我的情況..
假設你有以下的模型實體,這代表了他們自己的單個表:
電影 [Movie_Id,名稱,等級,..]
演員 [Actor_Id,名字,姓氏,..]
主任 [DIRECTOR_ID,名字,姓氏,..]
而所謂的 「建議」 的另一個實體/表,重新在網站內的用戶之間呈現推薦。這個想法是推薦可以是任何類型的,即有人推薦一個演員,或某人推薦一部電影。基本上,這個表應該是這個樣子:
建議 [Recommendation_Id,OBJECT_ID,OBJECT_TYPE,..]
這裏就是我卡住了進去。我如何將這些關係映射到nHibernate中與Fluent? 我的意思是..雖然映射,我不能指定類型(哪個表相關)'因爲這是在運行時確定的,但我不能只依靠Id本身,因爲它不能暗示屬於哪個表。
例如,假設這個紀錄上建議表:
Recommendation_Id - OBJECT_ID - OBJECT_TYPE
83001--401--- 「M」
基本上我存儲字符識別(在這種情況下「 M「代表表」電影「)來知道表Object_Id屬於哪個表。我不能只存儲Object_Id而沒有Object_Type ..
映射與功能NHibernate多個表
作爲最終評論,我想補充一點,我已經看到了所有的每類表,每表的子類,每表的具體類例如,但我相信這些都不適合這種情況,因爲Movies_Id,Actors_Id,Directors_Id,...都是不同的,Recommendations_Id也是如此。我的意思是,這裏沒有基類的子類繼承,他們根本不共享Id。
我希望我能讓自己清楚。 在此先感謝。
應當注意的是,功能NHibernate目前不支持多點到任意點是什麼,我想這會做。除非我錯了,否則在更新電影時保存建議不會無縫地發生。Daniel的答案更接近於我能找到的其他任何東西; o) – JasonCoder
如果你想映射'any'關係的另一端,就像'Movie.Recommendations'中那樣,我相信你可以用'one to-many'和'where =「Object_Type ='M'」'屬性,您可以使用Fluent NHibernate進行操作。 –