Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nHibernate:具有复合键的多对一映射中的默认值_Nhibernate_Nhibernate Mapping_Default Value - Fatal编程技术网

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子句,并在代码中手动筛选集合。