我有一個對象如下NHibernate的唯一約束名稱和父對象失敗,因爲NH插入空
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持久化存儲時,它將首先插入帶有空StoreID的Bin記錄,然後再執行更新以設置正確的StoreID。這違反了唯一密鑰如果我堅持使用同名的Bin的兩個商店,因爲名稱列是相同的,並且StoreID爲兩者都爲空。
有什麼我可以添加到映射,以確保正確的StoreID包含在INSERT中,而不是稍後執行更新?我們使用的希洛身份生成,所以我們不是靠DB生成的標識列
編輯:用於對倉位類型的商店 映射信息
<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>
感謝
詹姆斯
感謝您的回覆,我已經添加了我正在使用的貼圖,但我認爲這是正確的,基於你所說的? – James 2010-04-27 09:38:02
映射看起來是正確的......我要問你是否設置了雙方,但是我看到了你對傑米·艾德的回答,所以我相信你是。 – 2010-04-27 10:45:38
鏈接已死。 – 2016-07-05 20:38:56