2009-04-24 149 views
1

我有一個頗爲曲折的場景/設計進行梳理和將非常感激一些建議或見解。NHibernate的映射參考表

我試圖映射沒有太大的成功以下。

<class name="CalEvent" table="tb_calEvents" lazy="false" > 

<id name="id" column="id"> 
    <generator class="hilo"/> 
</id> 

<property name="summary"/> 
---snip---- 

<bag name="categories" table="tb_calEvent_category" lazy="false"> 
    <key column="parentID"/> 
    <one-to-many class="Category"/> 
</bag> 

//////////////////

<class name="Category" table="tb_calEvent_category" lazy="false"> 

<id name="id" column="id" unsaved-value="0"> 
    <generator class="hilo"/> 
</id> 

<property name="categoryID"/> 

<property name="parentID"/> 

<property name="categoryType"/> 

類別表

[ID] BIGINT NULL [的parentID ] bigint NULL [categoryType] nvarchar(255)NULL [categoryID] int NULL CONSTRAINT [tb_calEvent_category_fk] FOREIGN KEY([parentID])

上面的tb_calEvent_category表似乎已被設置爲一種查找表。 有3種不同各自在自己的表類; 該catergoryType是參考哪個表的類別生命和的categoryID到該表的主鍵。

我沒有問題檢索calEvents,但不能幹淨地添加或更新。

有沒有人有任何想法我可能會去映射這個?可能嗎?還是我將不得不通過一些跳鐵圈到calEvents成功添加和更新到數據庫?

我想這個表已經設置好了,這樣可以減少連接或者可以添加其他類別。嗯..

感謝

回答

2

我覺得這是你的主要問題:

<id name="id" column="id" unsaved-value="0"> 
    <generator class="hilo"/> 
</id> 

<property name="categoryID"/> 

當你試圖設置類別ID的兩倍。

這可能是更喜歡你所需要的:

<id name="id" column="categoryID" unsaved-value="0"> 
    <generator class="hilo"/> 
</id> 

加上它可能更好地利用SQLSERVER身份發電機(本機),確保列被設置在SQLSERVER來標識,並確保了FK關係是應該的。

+0

謝謝,我不能這樣做,因爲categoryID字段引用其他三個表中的一個表中的記錄。 – user17510 2009-04-24 08:49:42