NHibernate集合映射问题

时间:2009-06-10 09:15:26

标签: collections nhibernate-mapping

我正在尝试在NHibernate中映射一个相对简单的父子(Invoice-InvoiceEntry)场景。以下是我的映射文件的一些部分:

来自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可能正在寻找InvoiceEntries PK,而不是EnvoiceEntryID。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

嗯,这个问题已经解决了,再次归咎于我的愚蠢。事实证明,InvoiceEntry实体集合也与另一个实体的链接不正确。如果有人对这些细节感兴趣请告诉我。