2009-06-10 112 views
0

我想在NHibernate中映射一個相對簡單的父 - 子(Invoice-InvoiceEntry)場景。下面是我的映射文件某些部分:NHibernate的集合映射問題

從Invoice.hbm.xml

<set name="InvoiceEntries" table="InvoiceEntries" inverse="true" cascade="all-delete-orphan" lazy="false"> 
    <key column="InvoiceID" /> 
    <one-to-many class="Jobflow.Models.Entities.InvoiceEntry, Jobflow" /> 
</set> 

從InvoiceEntry.hbm.xml

<many-to-one name="Invoice" class="Jobflow.Models.Entities.Invoice, Jobflow" column="InvoiceID" not-null="true" lazy="false" /> 

從Invoice.cs

private ISet<IInvoiceEntry> _invoiceEntries = new HashedSet<IInvoiceEntry>(); 

    public virtual ISet<IInvoiceEntry> InvoiceEntries 
    { 
     get { return _invoiceEntries; } 
     set { _invoiceEntries = value;} 
    } 

發生什麼事是,當我保存發票一切都很好。一條新記錄被插入到兩個表中。 InvoiceEntries表中列InvoiceID中的值與Invoices表中的ID列相同。但是,當我嘗試加載通過NHibernate的版本庫中的發票,我得到了以下錯誤:

NHibernate.ObjectNotFoundException:沒有行與指定的標識符存在[Jobflow.Models.Entities.InvoiceEntry#55]

55確實是Invoices表中正確的ID和InvoiceEntries表中正確的InvoiceID。但是,看起來好像NHibernate可能正在尋找InvoiceEntryID而不是EnvoiceEntryID。

有人可以幫我嗎?

回答

1

那麼這個問題就解決了,這又是我的愚蠢行爲。事實證明,InvoiceEntry實體集合也與另一個實體錯誤地鏈接。如果有人對細節感興趣,請告訴我。

+2

我希望你剛剛發佈的細節以> _ < – Aren 2011-05-09 17:17:59