Проблема сопоставления коллекции NHibernate - PullRequest
0 голосов
/ 10 июня 2009

Я пытаюсь отобразить относительно простой сценарий родитель-потомок (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;}
    }

Что происходит, когда я сохраняю счет, все в порядке. Новая запись вставляется в обе таблицы. Значение в столбце InvoiceID в таблице InvoiceEntries совпадает со значением столбца ID в таблице Invoices. Однако, когда я пытаюсь загрузить счет из хранилища через NHibernate, я получаю следующую ошибку:

NHibernate.ObjectNotFoundException: не существует строки с данным идентификатором [Jobflow.Models.Entities.InvoiceEntry # 55]

55 действительно является правильным идентификатором в таблице Invoices и правильным InvoiceID в таблице InvoiceEntries. Тем не менее, похоже, что NHibernate может искать InvoiceEntries PK, который вместо этого является EnvoiceEntryID.

Кто-нибудь может мне помочь с этим?

1 Ответ

1 голос
/ 10 июня 2009

Ну, этот вопрос решен, и я опять виноват в своей глупости. Оказывается, что коллекция сущностей InvoiceEntry была также неправильно связана с другой сущностью. Если кто-то заинтересован в деталях, дайте мне знать.

...