2012-12-19 50 views
1

SQL Server語法是:對於功能NHibernate專家:加入與WHERE條件

select tableAColumn1, tableAColumn2, tableBColumn1 
from tableA, tableB 
where ISNUMERIC(tableAColumn1) = 1 
and CONVERT(INT, tableAColumn1) = tableBColumn1 
and tableAColumn2 = 'something' 

什麼是在功能NHibernate實現這一目標的最佳方式是什麼?我需要多少個類才能獲得所得到的ClassMap,以及它看起來如何?

編輯:

public class BarausInfoMap : ClassMap<BarausInfo> 
    { 
     public BarausInfoMap() 
     { 
      Table("BARAUS"); 

      Id(x => x.nr); 

      Map(x => x.betrag); 

      Join("BARAUSLANG", m => 
      { 
       m.Fetch.Join(); 

       m.KeyColumn("Ula"); 
       m.Map(x => x.bezeichnung); 
       m.Map(x => x.sprache); 
       m.Map(x => x.la); 
       this.Where("m.la = 'SPE'"); 
      }); 
     } 
    } 

NR列是int和烏拉列是字符串,但我需要加入這些2.此外,this.where指外部表我猜想,然而,應該請參閱內部表格。

+0

你能證明你迄今爲止做了什麼嗎? – rae1

+0

確定沒有問題將其添加到原始帖子 – cdbeelala89

回答

1

也許這是最好使用獨立的實體和獨立的映射,比你建立查詢像

queryOver<BarausInfo>.JoinQueryOver(x => x.BarauslangObject, barauslangAlias, JoinType.InnerJoin, conjunction) 

和一起將包含ISNUMERIC(tableAColumn1) = 1和tableAColumn2 =「東西」。和BarausInfo映射,你可以指定類似References(v => v.BarauslangObject).Formula(「CONVERT(INT,tableAColumn1)= tableBColumn1」)。只需瞭解如何正確指定公式中的列。