nHibernate:具有复合键的多对一映射中的默认值
我正在处理一个无法更改的旧数据库。nHibernate:具有复合键的多对一映射中的默认值,nhibernate,nhibernate-mapping,default-value,Nhibernate,Nhibernate Mapping,Default Value,我正在处理一个无法更改的旧数据库。 我有一个表(表1),它与另一个具有复合键的表(表2)具有多对一关系。 如果一切顺利,表1的映射可能如下所示: <class name="Table1" table="Table1"> <id name="Id" column="I_ID"></id> <many-to-one name="Table2" class="Table2"> <column name="I_TABLE2_ID1"&
我有一个表(表1),它与另一个具有复合键的表(表2)具有多对一关系。
如果一切顺利,表1的映射可能如下所示:
<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列。所以我想用一个默认值来代替。有没有办法在映射文件中实现这一点 编辑1:
以下映射似乎有效:
<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,但我想我可以使用私有属性使实体看起来更好……也许您应该将此关系指定为一对多,并在集合上指定where子句
谢谢您的回复!是这样的吗?我想也可以跳过映射中的关系,将其添加到linq查询中?是的,这就是我的意思。如果需要,可以绕过包中的where子句,并在代码中手动筛选集合。