nHibernate:使用复合键进行多对一映射时的默认值

时间:2011-11-01 08:24:53

标签: nhibernate nhibernate-mapping default-value

我正在处理一个无法更改的旧数据库 我有一个表(Table1)与另一个具有复合键的表(Table2)具有多对一的关系。
如果一切都是前进的,那么table1的映射可能如下所示:

<class name="Table1" table="Table1">
  <id name="Id" column="I_ID"></id>
  <many-to-one name="Table2" class="Table2">
    <column name="I_TABLE2_ID1"></column>
    <column name="I_TABLE2_ID2"></column>
  </many-to-one>
</class>

我的问题是我在表1中没有I_TABLE2_ID2列 所以我想使用默认值。有没有办法在映射文件中完成这个?

EDIT1:
以下映射似乎有效:

<class name="Table1" table="Table1">
  <id name="Id" column="I_ID"></id>
  <property name="Table2Id1" column="I_TABLE2_ID1"></property>
  <bag name="Table2" where="I_ID2 = 12">
    <key column="I_ID1" property-ref="Table2Id1"></key>
    <one-to-many class="Table2"/>
  </bag>
</class>

此外,我必须将Table2属性的类型更改为IList,但我猜我可以使用私有属性使实体看起来更好......

1 个答案:

答案 0 :(得分:0)

也许您应该将此关系指定为one-to-many,并在集合上指定where子句。

http://www.nhforge.org/doc/nh/en/index.html#collections-mapping