2013-02-17 26 views
0

我使用NHibernate的3.3.2(第一次),我試圖創建下面的表,這樣的ID是唯一的表/實體標識符和序列是唯一的身份每個組,表格示例俱樂部123,232和444是組。與NHibernate的每個羣組身份

ID Club Sequence 
1 123 1 
2 123 2 
3 232 1 
4 232 2 
5 444 1 
6 123 3 

我想插入只與俱樂部類別,兩個身份將自動。

可以這樣做嗎?如果是這樣,我該怎麼做?

+0

沒有提及預期的對象設計。您如何計劃教授RDBMS來生成這樣的序列號? – 2013-02-17 16:16:21

+0

預期的對象設計將具有相同的常規屬性以及將成爲int的Sequence屬性。你評論的第二部分就是我的問題。 – Mithir 2013-02-18 06:16:04

+0

然後你應該爲sql和你的RDBMS添加標籤。我以爲你在問如何讓NHibernate不會干擾數據庫生成的數字。 – 2013-02-18 06:42:20

回答

1

如果問題是這樣的:

什麼是根據這種模式產生的順序列中的值的最好方法是什麼?

,然後這裏有一些提示:

  • 要讓DB生成順序列,我認爲你需要看看基於觸發器的解決方案。除非您創建一些(SQL-)代碼來處理它,否則您所說的「組」就意味着對數據庫沒有任何意義。您可能想要創建一個存儲過程來生成該數字,然後創建一個INSERT觸發器。

  • NHibernate可以被告知忽略INSERT列並只讀回DB生成的值。請參閱NHibernate參考中的Generated Properties

  • 您描述的結構與NHibernate中的列表映射將生成的結構類似,如果刪除Id列。集合總是由某種東西所擁有,所以如果您擁有俱樂部擁有的集合,這可能是一個解決方案。俱樂部專欄然後指向收集所有者,並且序列將是列表中的索引。 (我假設表應該包含更多的列,那麼這將是在列表中的元素。)

我認爲你需要做的是思考什麼對象模型有意義的是什麼你的問題。然後設計表格來匹配。 NHibernate擅長處理現有的舊錶模型,但如果從頭開始,首先創建模型是有意義的。

+0

謝謝,這是一個很好的答案! – Mithir 2013-02-18 08:30:29

0

可以在屬性映射中指定一個公式,以便在執行插入操作時生成最大序列。或者你可以改變你的實體來產生一個序列號,如果一個不存在的話。

+0

你可以指定關於公式?一個例子或鏈接尋找類似的東西? – Mithir 2013-02-21 05:40:56