У меня есть объект следующим образом
Public Class Bin
Public Property Id As Integer
Public Property Name As String
Public Property Store As Store
End Class
Public Class Store
Public Property Id As Integer
Public Property Bins As IEnumerable(Of Bin)
End Class
У меня есть уникальное ограничение в базе данных на Bin.Name и BinStoreID для обеспечения уникальных имен в магазинах. Однако, когда NHibernate сохраняет хранилище, он сначала вставляет записи Bin с нулевым StoreID, а затем выполняет обновление для установки правильного StoreID. Это нарушает уникальный ключ, если я сохраняю два хранилища с корзиной с одинаковым именем, поскольку столбцы имени одинаковы, а идентификатор StoreID для обоих равен нулю.
Есть ли что-то, что я могу добавить в сопоставление, чтобы убедиться, что правильный идентификатор StoreID включен в INSERT, а не выполнять обновление позже? Мы используем создание идентификаторов HiLo, поэтому мы не полагаемся на сгенерированные БД столбцы идентификаторов
EDIT:
Информация о сопоставлении магазина для типа корзины -
<many-to-one class="NHS.EDC.SM.Data.Entities.Store, EDCBusinessLogic.SM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="Store">
<column name="StoreID" unique-key="UniqueBinKey" />
</many-to-one>
А для бункеров в магазине стоит
<set access="nosetter.camelcase-underscore" cascade="all-delete-orphan" inverse="true" name="Bins" mutable="true">
<key>
<column name="StoreID" />
</key>
<one-to-many class="NHS.EDC.SM.Data.Entities.Bin, EDCBusinessLogic.SM, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</set>
Спасибо
Джеймс