.net FluentNHibernate有许多不持久的外键
我在这里被难住了。。。我得到了一个我认为非常简单的集合,我正在使用FluentNHibernate的HasMany函数映射该集合,虽然所有子级显式设置的属性都在保存,但外键值却没有。以下是我删除了无关数据的类和映射:.net FluentNHibernate有许多不持久的外键,.net,nhibernate,fluent-nhibernate,.net,Nhibernate,Fluent Nhibernate,我在这里被难住了。。。我得到了一个我认为非常简单的集合,我正在使用FluentNHibernate的HasMany函数映射该集合,虽然所有子级显式设置的属性都在保存,但外键值却没有。以下是我删除了无关数据的类和映射: Public Class OrderForm Private _sections As ICollection(Of OrderSection) Public Sub New() _sections = New List(Of OrderSecti
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_部分中的外键允许为null,因为我知道NHibernate喜欢创建行,然后稍后设置外键
问题是,我有另一个项目,据我所知,它使用相同的集合定义和映射,并且工作得很好。该项目使用SQL的ID标识功能,我认为它使用的是FluentNHibernate的早期版本
上述类和映射使用NHibernate 3.1和FluentNHibernate 1.2。任何帮助都将不胜感激 检查实际数据库中是否存在外键,我在使用EF时遇到了相同的问题,这就是为什么,可能会有所帮助。该问题是由我正在使用的预插入/预更新事件侦听器引起的。我没有考虑它,因为我在另一个项目中使用了它,效果很好,但是我在这个项目中对事件侦听器所做的一个更改是,我在主会话中进行了另一次选择,这似乎会干扰更新。我改变了选择使用辅助会话,现在一切正常
谢谢你的建议。的确如此;最初,我忘记在外键列中允许空值,当NHibernate尝试向其中插入空值时出现SQL错误,因为NHibernate没有在列中插入任何值。您如何创建此实体并将其添加到其集合?发布这样做的代码可能会有所帮助。我只是更新它们,使用标准的collection add方法添加到集合中,然后在NHibernate会话上调用addrootEntity。但是看起来我发现了问题。。。似乎有一个事件侦听器导致保存出现问题。。。当我删除它们时,外键会像我预期的那样得到更新。如果它解决了您的问题,您应该发布答案并接受它。