我正在尝试在NHibernate中映射一个相对简单的父子(Invoice-InvoiceEntry)场景。以下是我的映射文件的一些部分:
<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>
<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。
有人可以帮我吗?
答案 0 :(得分:1)
嗯,这个问题已经解决了,再次归咎于我的愚蠢。事实证明,InvoiceEntry实体集合也与另一个实体的链接不正确。如果有人对这些细节感兴趣请告诉我。