2

私はNHibernate 3とQueryOverを初めて使用し、このOracle SQLをNHibernate QueryOver式に変換しようとしています:

  SELECT *  
  FROM MYTABLE T1  
  WHERE T1.ID= 'ID'  
  AND T1.TYPE= 'TYPE'  
  AND T1.DATADATE= '20130101'  
  AND (T1.GENERATIONDATE || T1.GENERATIONHOUR) =  
    (SELECT MAX (T2.GENERATIONDATE || T2.GENERATIONHOUR) 
    FROM MYTABLE T2  
    WHERE T1.ID= T2.ID
    AND T1.TYPE= T2.TYPE
    AND T1.DATADATE= T2.DATADATE)

5 つの列はすべてテーブルの主キーの一部であり、GENERATIONDATE ('yyyyMMdd' 形式の NVARCHAR2(8) 日付) と GENERATIONHOUR ('HH' 形式の NVARCHAR2(2) 時間) を連結する最新の行を選択してフィルタリングするだけです。 ) 田畑。

私は自分のクラスの QueryOver プロバイダーとして静的クラスを持っているので、1 つの単純なクエリに対して次のことを行っています。

class MyTableQueryOver
{
    static QueryOver<MyTable, MyTable> ByIDAndTypeAndDate(string id, string type, string date)
    {
         return QueryOver.Of<MyTable>()
             .Where(x => x.Id == id 
                 && x.Type == type 
                 && x.Date == date);
    }
}

どんなアドバイスでも大歓迎です。

前もって感謝します。

4

0 に答える 0