I'm pretty stumped here... I've got what I believe to be a really simple collection that I'm mapping using FluentNHibernate's HasMany function and while all the children's explicitly set properties are saving, the foreign key value is not. Here are my classes and mappings (with extraneous data removed):
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
My mapping looks like this:
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
The foreign key in the Forms_OrderForm_Sections allows nulls because I know that NHibernate likes to create the row and then set the foreign key later.
The thing is, I have another project that uses, from what I can tell, the same collection definitions and mapping and it works just fine. That project uses SQL's Identity feature for Ids and I think is using the previous version of FluentNHibernate.
The above classes and mappings are using NHibernate 3.1 and FluentNHibernate 1.2. Any help would be greatly appreciated!