【发布时间】:2009-06-10 09:15:26
【问题描述】:
我正在尝试在 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。
谁能帮我解决这个问题?
【问题讨论】:
标签: collections nhibernate-mapping