NHibernate遗留数据库多对一

NHibernate遗留数据库多对一,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我面临着NH和遗留数据库的映射关系问题 我们有两张桌子 Table1 [ Id primary Key (sql identity) Cod1, Cod2 ] 然后是第二张桌子 Table2 [ CompositeCode primary key (assigned), Cod1, Cod2 ] CompositeCode是Cod1+Cod2的计算字段,是表的键 我试图以这种方式映射表1和表2之间的只读多对一关系 <class name="Table

我面临着NH和遗留数据库的映射关系问题

我们有两张桌子

Table1 [
   Id primary Key (sql identity)
   Cod1,
   Cod2 ]
然后是第二张桌子

Table2 [
   CompositeCode primary key (assigned),
   Cod1,
   Cod2 ]
CompositeCode是Cod1+Cod2的计算字段,是表的键

我试图以这种方式映射表1和表2之间的只读多对一关系

<class name="Table2"  >
  <id name="Id" >
     <generator class="identity" />
 </id>
 <many-to-one name="Table2" 
             formula="SELECT C.CompositeCode FROM Table2 C WHERE C.Cod1= Cod1 AND C.Cod2 = Cod2"/>
  <property name="Cod1" />
  <property name="Cod2" />
</class>
这是生成的SQL语句

 SELECT TOP (100) this_.Id as Id1_37_0_, 
 this_.Cod1 as Cod1l3_37_0_, 
 this_.Cod2 as Cod24_37_0_, 
 SELECT this_.CompositeCode  FROM Table2 C WHERE this_.Cod1 = C.OCd1 AND this_.Cod2 =  C.COd2 as formula0_0_ 
 FROM Table1 this_ 
怎么了

我也试着改变这个公式

  formula="SELECT C.CompositeCode FROM Table2 C WHERE C.CompositeCode = Cod1 + Cod2"
但是没有运气


p.S.NH是3.1版

执行子选择的公式语句必须用括号括起来
(选择…)

注意:我尝试过类似的场景,它正在工作。除非生成的代码不是

但是

  formula="SELECT C.CompositeCode FROM Table2 C WHERE C.CompositeCode = Cod1 + Cod2"
formula="(SELECT C.CompositeCode FROM Table2 C WHERE C.CompositeCode = Cod1 + Cod2)"
...
,(SELECT this_.CompositeCode  FROM Table2 C .. // this_.ComositeCode
...
,(SELECT C.CompositeCode  FROM Table2 C .. // C.CompositeCode