[更新與映射文件]NHibernate的延遲加載/的代理對象 - 持久性問題
遇到了一個問題,有延遲加載/代理對象被今天依然存在。
它涉及兩個類,發票和地址。發票具有地址屬性。這兩個類都被設置爲延遲加載,並且所有方法都是虛擬的。
在代碼中我做了一個Invoice.address = HomeCompany.address,我可以在運行時驗證Invoice.address設置正確(Invoice.address屬性正確分配了一個'地址代理')。但是,當發票對象持續存在時,發票表中的'addresss_id'列將被設置爲'0'。但是,如果我通過添加'Lazy = False'來更改地址的映射文件,那麼一切正常(invoice.address屬性設置爲完全實例化的地址)。
使用nHibernate 2.1.2,這讓我瘋狂。
[注:NHibernate的是不產生任何錯誤]
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping default-access="field.camelcase-underscore" xmlns="urn:nhibernate-mapping-2.2">
<class name="TMS.Business.invoice, TMS.Business" dynamic-update="true" optimistic-lock="all" table="invoice">
<id name="document_id" type="Int32">
<generator class="assigned" />
</id>
<property name="create_date" />
<many-to-one name="last_updt_user" column="last_updt_userid"/>
<property name="last_updt_datetime" />
<property name="amount" />
<property name="approved_flag"/>
<property name="ba_document_date" />
<property name="ba_document_no" not-null="true"/>
<property name="comment" not-null="true"/>
<property name="document_no" />
<property name="document_no_construct"/>
<property name="dry_gas_billing_date" />
<property name="due_date" />
<property name="fin_batch_no" />
<property name="fin_interface_type_cd"/>
<property name="fin_process_datetime" />
<property name="invoice_date" />
<property name="netout_flag"/>
<property name="override_amount" />
<property name="receipt_date" />
<property name="void_flag"/>
<many-to-one name="accountant_user" column="accountant_userid"/>
<many-to-one name="ba" column="ba_id" property-ref="_ba_id" />
<many-to-one name="ba_addr" column="ba_addr_id" property-ref="_ba_address_id" />
<many-to-one name="ba_contact" column="ba_contact_id" property-ref="_ba_contact_id" />
<many-to-one name="dry_gas_billing_type" column="dry_gas_billing_type_cd" property-ref="_code_key" />
<many-to-one name="internal_ba" column="internal_ba_id" property-ref="_ba_id" />
<many-to-one name="invoice_subtype" column="invoice_subtype_cd" property-ref="_code_key" />
<many-to-one name="invoice_type" column="invoice_type_cd" property-ref="_code_key" />
<many-to-one name="payment_method" column="payment_method_cd" property-ref="_code_key" />
<many-to-one name="payment_term" column="payment_term_id" />
<many-to-one name="remit_to_addr" column="remit_to_addr_id" property-ref="_ba_address_id"/>
<bag name="document_histories" lazy="true" cascade="none" inverse="true" where ="linked_table = 'invoice'" order-by="document_history_id DESC">
<key column="linked_pk"/>
<one-to-many class="TMS.Business.document_history, TMS.Business"/>
</bag>
<bag name="trxn_pricelines" lazy="true" cascade="none" inverse="true">
<key column="document_id"/>
<one-to-many class="TMS.Business.trxn_priceline, TMS.Business"/>
</bag>
</class>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping default-access="field.camelcase-underscore" xmlns="urn:nhibernate-mapping-2.2">
<class name="TMS.Business.ba_address, TMS.Business" optimistic-lock="version" table="_ba_address">
<id name="item_guid" type="Guid">
<generator class="guid" />
</id>
<version name="version" />
<property name="active_flag" />
<property name="address" />
<property name="city" />
<property name="county" />
<property name="remarks" />
<property name="zip" />
<many-to-one name="business_associate" column="business_associate_guid" />
<many-to-one name="country" column="country_code" />
<many-to-one name="state" column="state_code" />
<property name="_ba_address_id" generated="insert" update="false" insert="false"/>
</class>
發佈您的映射文件。 – LordHits 2010-02-24 21:10:18