我正在处理一个无法更改的旧数据库
我有一个表(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,但我猜我可以使用私有属性使实体看起来更好......
答案 0 :(得分:0)
也许您应该将此关系指定为one-to-many
,并在集合上指定where子句。
http://www.nhforge.org/doc/nh/en/index.html#collections-mapping