2011-11-10 26 views
3

我正在重構一個流暢的nHibernate映射,我似乎無法弄清楚這一點。我想將類型爲List<decimal>的房產重新映射到子表,但如果可能的話使用單個HasMany流利的NHibernate - 映射列表<decimal>到有序的子表

現在,我們有:Map(x => x.DecimalList); 這給了我們一個很好的類型varbinary(8000)

在我試圖移動這一個有序的子表我已經試過:

HasMany(x => x.DecimalList) 
.Table("ParentTable_DecimalList") 
.KeyColumn("Id") 
.Element("Amount") 
.KeyColumn("ParentId") 
.Cascade.AllDeleteOrphan(); 

而這給了我該關係有兩列:ParentIdAmount。唯一的問題是,我還想在子表上放置一個Order或Primary Key/ID列,以確保我們保留列表的順序,不管它是什麼。

有沒有辦法添加一個強大的int主鍵列和/或一個Order列,而不會將此問題解決到更復雜的子對象/映射?

回答

4

地圖它作爲一個列表

HasMany(x => x.DecimalList) 
... 
.AsList(x => x.WithColumn("ListPosition") 

默認情況下,它被映射爲一個袋子,裏面不保留訂單。

+0

太棒了,似乎工作。謝謝! –

+0

我得出的結論是,如果沒有子對象容器,像這樣的列表可能有點代碼味道。當然,除非這個清單真的是一個沒有身份的價值對象清單。我最終重構了一個子對象容器佈局,但仍然很高興知道如何以這種方式進行操作。再次感謝! –

+0

添加AsList(x => x.WithColumn(「ListPosition」))在列表中創建空對象任何幫助 – Sahi