我在這裏很難過......我有我認爲是一個非常簡單的集合,我使用FluentNHibernate的HasMany函數進行映射,並且所有孩子的顯式設置屬性都保存,外鍵值不是。這裏是我的類和映射(除去多餘的數據):FluentNHibernate HasMany不持久外鍵
Public Class OrderForm
Private _sections As ICollection(Of OrderSection)
Public Sub New()
_sections = New List(Of OrderSection)
End Sub
Public Overridable Property Id As Integer
Public Overridable ReadOnly Property Sections As ICollection(Of OrderSection)
Get
Return _sections
End Get
End Property
End Class
Public Class OrderSection
Public Overridable Property Id As Integer
Public Overridable Property Name As String
End Class
我的映射是這樣的:
Public Class OrderFormMapping
Inherits ClassMap(Of OrderForm)
Public Sub New()
Table("Forms_OrderForm")
Id(Function(x) x.Id).GeneratedBy.HiLo("hibernate_unique_key", "Forms_OrderForm", 1000)
HasMany(Function(x) x.Sections).KeyColumn("OrderFormId").Access.CamelCaseField(Prefix.Underscore).Cascade.AllDeleteOrphan()
End Sub
End Class
Public Class OrderSectionMapping
Inherits ClassMap(Of OrderSection)
Public Sub New()
Table("Forms_OrderForm_Sections")
Id(Function(x) x.Id).GeneratedBy.HiLo("hibernate_unique_key", "Forms_OrderForm_Sections", 1000)
Map(Function(x) x.Name)
End Sub
End Class
在Forms_OrderForm_Sections的外鍵允許空值,因爲我知道,NHibernate的喜歡創造行,然後再設置外鍵。
事情是,我有另一個項目,使用,我可以告訴,相同的集合定義和映射,它工作得很好。該項目爲IDS使用SQL的身份特徵,我認爲它使用的是以前版本的FluentNHibernate。
上述類和映射使用NHibernate 3.1和FluentNHibernate 1.2。任何幫助將不勝感激!
你是如何創建這個實體並添加到它的集合?這可能有助於發佈這樣做的代碼。 – 2011-04-25 21:06:18
我只是將它們新建起來,使用標準集合add()方法添加到集合中,然後在NHibernate會話中調用add(rootEntity)。 – Andorbal 2011-04-25 21:07:49
但它看起來像我發現問題......它看起來像是有一個事件監聽器,導致保存問題......當我刪除它們時,外鍵得到更新,因爲我會預料到的。 – Andorbal 2011-04-25 21:08:11