私はSQLサーバー機能でNHibernateを高度に使用しているように見えるものを作ろうとしています。
NHibernate の ICriteria インターフェイスを使用して、リストビューのページング、並べ替え、およびフィルタリングを提供しています。ビジネス オブジェクトの 1 つは、3 つの異なるテーブルからのアイテムの集約です。DB でこの集計を行うために、transact-sql 関数を使用してパラメーターを受け取りました。
関数を呼び出すために、session.GetNamedQuery によって返される IQuery インターフェイスを使用しています。しかし、ページング/フィルタリング/ソート コードを使用するには、ICriteria インターフェイスを使用したいと思います。それを達成するために、私は次のことを考えました:
- 新しいトランザクションを開く
- グローバル一時テーブルを作成する関数を呼び出す (現在のように結果を返す代わりに)
- 何らかの形でNHibernateマッピングを変更して、一時テーブルに適用されるようにします(それができるかどうかはわかりません。また、これはトランザクションを作成するスコープに固有でなければなりません...)
- ICriteria インターフェイスを使用して、新しいマッピングを使用して新しいテーブルでクエリを実行します
- 一時テーブルを削除する
いくつかの質問があります:
- 代替案を提案できますか?
- 実行時に、特定のコード スコープに対してローカルで NHibernate マッピングのテーブルを置き換えることは可能ですか?
- 一時テーブルを生成して破棄するには、どのくらいのコストがかかりますか?