NHibernate的多对一映射问题

NHibernate的多对一映射问题,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,首先,我对NHibernate比较陌生。有两个关于TaxMapping和Address的表。一个TaxMapping必须有一个地址,并且一个地址可以属于多个TaxMapping。它们通过外键链接 分类映射hbm <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ITAPDTO" assembly="ITAPDTO">

首先,我对NHibernate比较陌生。有两个关于TaxMapping和Address的表。一个TaxMapping必须有一个地址,并且一个地址可以属于多个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>
我可以拉入数据并绑定到网格视图而不会出现任何问题。然而,当我更新Taxmapping时,Address项目的AddressID始终为null事件,尽管其他地址字段已正确填充,我不知道为什么。我目前有一个黑客在我调用update之前从db中提取id,但我真的不应该这样做。任何想法都欢迎
这是因为在Taxmapping对象的Address属性中将cascade设置为none吗?尝试更改它以保存更新。您可能还想阅读nhibernate文档,以确定哪种级联设置最适合您的情况,尽管听起来保存更新最合适

除了Krazzy的观点之外,您还应该检查您的会话是否已适当关闭和/或刷新。从未刷新的长时间运行的会话可能会出现类似的问题。

您能想到的唯一用于描述问题的标记是代码?更新的标记以反映问题