2009-12-13 109 views
0

首先,我對NHibernate來說比較新。在TaxMapping和Address上有兩張表。一個TaxMapping必須有一個地址,一個地址可以屬於多個稅務映射。他們是通過外鍵NHibernate的多對一​​映射問題

TaxMapping HBM聯

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ITAPDTO" assembly="ITAPDTO"> 
<class name="TaxMapping" table="tblTaxMapping"> 
<id name="Tax_Mapping_ID"> 
    <column name="Tax_Mapping_ID" sql-type="bigint" not-null="true"/> 
    <generator class="identity" /> 
</id> 
<property name="Tax_ID" /> 
<property name="Client_Code" /> 
<property name="NRA_Sub_Account" /> 
<property column="Domicile" type="String" name="Domicile" length="5" />  
<many-to-one name="Address" column="AddressID" cascade="none" not-found="exception" not-null="true" fetch="join" class="ITAPDTO.Address,ITAPDTO" /> 
</class> 
</hibernate-mapping> 




<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ITAPDTO" assembly="ITAPDTO"> 

<class name="Address" table="Address"> 
<id name="AddressID" column="AddressID" type="Int32" unsaved-value="0"> 
    <generator class="identity"/> 
</id> 
<property column="Client" type="String" name="Client" not-null="true" length="100" /> 
<property column="Contact" type="String" name="Contact" not-null="true" length="50" /> 
<property column="Address1" type="String" name="Address1" not-null="true" length="100" /> 
<property column="Address2" type="String" name="Address2" not-null="true" length="100" /> 
<property column="Address3" type="String" name="Address3" not-null="true" length="100" /> 
<property column="City" type="String" name="City" not-null="true" length="50" /> 
<property column="State" type="String" name="State" not-null="true" length="50" /> 
<property column="PoBox" type="String" name="PoBox" not-null="true" length="50" /> 
<property column="PostCode" type="String" name="PostCode" not-null="true" length="20" /> 
<property column="Country" type="String" name="Country" not-null="true" length="50" /> 
<property column="InsertedBy" type="String" name="Modified_By" length="20" /> 
<property column="InsertedOn" type="DateTime" name="Modified_Date" /> 
<property column="ConfirmedBy" type="String" name="Approved_By" length="20" /> 
<property column="ConfirmedOn" type="DateTime" name="Approved_Date" /> 
<property column="Status" type="String" name="Status" /> 
<property column="IUD" type="String" name="IUD" /> 
</class> 
</hibernate-mapping> 

我可以在數據拉並綁定到沒有問題的網格視圖。但是,當我更新稅收映射時,地址對象的AddressID始終爲空事件,但其他地址字段正確填充,我不知道爲什麼。我現在有一個黑客的地方在我打電話給更新之前從db中取出id,但我真的不應該這樣做。任何想法都會受到歡迎 問候

+0

你能想到的唯一標記你的問題的特徵是「代碼」? –

+0

已更新標籤以反映問題 – ciaran

回答

0

這是由於級聯在Taxmapping對象的Address屬性中設置爲「none」嗎?嘗試將其更改爲「保存更新」。您可能還想閱讀nhibernate文檔以確定哪種級聯設置最適合您的情況,儘管聽起來像「save-update」是最合適的。

0

除了Krazzy的觀點,你還應該檢查你的會議是否適當關閉和/或沖洗。從未被刷新的長時間運行的會話可能會出現類似的問題。