NHibernate:使用鉴别器列作为多对一关系

时间:2010-08-06 18:05:14

标签: c# nhibernate-mapping

我有两张桌子,我正试图映射。 Table1通过FK,fk_table2_id与Table2有多对一的关系。

在table1的映射中,我还定义了一个鉴别器和一个子类,如下所示:

<class name="MyAssembly.MyClass1, MyAssembly" table="table1" discriminator-value="null">
<discriminator column="fk_table2_id" type="int"/>

<many-to-one name="Category" class="MyAssembly.MyClass2, MyAssembly" column="fk_table2_id"/>

<subclass name="MyAssembly.MyDerivedClass1, MyAssembly" discriminator-value="1"/>

尝试保存MyClass1 / MyClass2时,出现以下错误:

SetUp : System.ArgumentOutOfRangeException : Index was out of range. Must be non-negative and less than the size of the collection.

参数名称:index

现在我很确定这与我使用一列同时用于鉴别器和关系这一事实有关。这真的是一个限制吗?我该如何解决它?

1 个答案:

答案 0 :(得分:3)

我认为我得到了解决方法以防其他人需要它:

<discriminator type="int" formula="fk_table2_id"/>