У меня есть две таблицы:
SupportTicket
SupportTicketID
SupportTicketDate
SupportTicketNote
SupportTicketNoteID
SupportTicketNoteDate
SupportTicketID
С ограничением внешнего ключа, чтобы у меня не было никаких неассоциированных заметок ... в sql это ограничение работает правильно.
В моем классе SupportTicket у меня есть свойство IList SupportTicketNotes и оно сопоставлено как пакет (вероятно, действительно должен быть набором, но это не важно в данный момент). Нагрузка работает просто отлично. Проблема заключается в том, что если я добавляю SupportTicket, добавляю SupportTicketNote, добавляю примечание к заявке и сохраняю заявку. NHibernate вставляет SupportTicket, затем вставляет SupportTicketNote с идентификатором SupportTicketID, равным нулю, что, конечно, взрывается из-за ограничения FK. Если я удалю ограничение, оно будет вставлено с идентификатором SupportTicketID, равным нулю, а затем вернется и выполнит обновление в SupportTicketNote с правильным значением идентификатора ... но это кажется ... неправильным. Есть ли что-то, что я мог бы сделать в отображении, которое вызывает это?
ОБНОВЛЕНО для включения сопоставления «многие к одному» на дочернем объекте
Вот мое текущее сопоставление для SupportTicket:
<bag name="_supportTicketNotes" table="SupportTicketNotes" access="field" cascade="save-update" inverse="true" >
<key column="SupportTicketID" foreign-key="FK_SupportTicketNotes_supporttickets" ></key>
<one-to-many class="NhibernateSample.DomainModel.SupportTicketNote, NhibernateSample.DomainModel" />
</bag>
Вот мое сопоставление для SupportTicketNote (обратите внимание, что мой класс SupportTicketNote имеет свойства объекта SupportTicketID и SupportTicket):
<many-to-one name="SupportTicket" class="NhibernateSample.DomainModel.SupportTicket, NhibernateSample.DomainModel" column="SupportTicketId" cascade="all"/>