我在 ReportRow (父)和 Mark (子)之间建立了这种关系
<class name="ReportRow">
<bag name="Marks" cascade="save-update" inverse="true">
<key column="ReportRowId"/>
<one-to-many class="Mark"/>
</bag>
</class>
// C# code
public virtual IList<Mark> Marks { get; set; }
但它没有被保存(在 Mark 表中,ReportRowId 始终为空)。
我知道由于 NHibernate 的“怪癖”,这些关系总是必须是双向的,所以对于我的 Mark 类,我有:
<many-to-one name="ReportRow" class="ReportRow" column="ReportRowId" />
// C#
public virtual ReportRow ReportRow { get; set; }
我什至在我的项目的其他地方也有这种关系的其他例子,但是这个不起作用,除了......
... Mark 和 ReportRow 都有子类(例如 ModuleMark 和 ModuleReportRow),我使用joined-subclass 策略来实现继承。
这和它有关系吗?对于关系的两端,映射是在父类映射中定义的,而不是嵌套在<joined-subclass>
映射中。
谢谢