我有一個獨特的情況與遺留應用程序,我有一個基於兩個整數值的父/子關係。不幸的是,這些字段是而不是 id和parentId或類似的東西。這些列是ItemId和SubItemId。當這兩列彼此相等時,該項目被假定爲父項。當它們不同時,ItemId引用Items父項,而SubItemId只是它的子項的標識符。NHibernate的奇怪關係映射問題
下面是一個例子 項目Id = 1,SubItemId = 1:父件 項目Id = 1,SubItemId = 6:子項,其父是Item其中ID字段是(1,1) 項目Id = 2 ,SubItemId = 2:父件 項目Id = 2,SubItemId = 9:子項,其父是Item其中ID字段是(2,2)
與此信息所以,我一個類層次結構設置像這樣:
public class Item
public property ItemId as Integer
public property SubItemId as Integer
end class
class ParentItem : Item
end class
class SubItem : Item
public property ParentItem as ParentItem
end class
所以我想映射SubItem cl的ParentItem屬性屁股到相應的ParentItem使用NHibernate和我不能爲我的生活弄清楚如何。我能夠讓NHibernate基於公式鑑別器實例化正確的類,並且我希望類似的東西可以用於多對一的關係。
我無法更改表格結構,這當然限制了我的選擇。另外,我爲我的映射使用FluentNHibernate,所以隨意使用它的語法提供建議。
謝謝!
更新 我創建的補充,等同於一個外鍵指向父,現在我得到一個NHibernate的映射錯誤兩個新列視圖:
Foreign key (FK163E572EF90BD69A:ItemsNHibernateView [ParentItemID, ParentrSubitemID])) must have same number of columns as the referenced primary key (ItemsNHibernateView [ItemID, SubitemID])
這是扔我送行因爲對我來說,它看起來像兩個鍵做具有相同的列數...
我知道你說你不能改變表結構,但是你能夠在數據庫端創建一個視圖來處理數據,然後它到達NHibernate? – 2010-06-16 22:09:01
我不認爲創建視圖會是一個問題。 目前,我們已經有了用於創建和編輯這些項目的其他機制。我們只是希望將我們的物品表映射爲支持其他物品的需求,並作爲邁向更美好未來的第一步! ;) – Andorbal 2010-06-17 13:40:05