6

UnderlyingCriteriaを使用するときに を設定する方法を知っている人はいSession.Queryますか?

1 つの特定のクエリに対して、より制限的なコマンド タイムアウト (またはクエリ タイムアウト) を設定しようとしています。セッション内の接続または他のクエリにその制約を追加しないようにしています。

古いQueryOver機能で、このようなものを使用できることがわかりました

// QueryOver returns a IQueryOver<T,T> an nHibernate class 
// with access to UnderlyingCriteria

var query = Session.QueryOver<Puppy>();
query.UnderlyingCriteria.SetTimeout(120); 

それに関する問題は、それが古く、バグが多く、機能上の問題がたくさんあることです。

を使用Queryすると、IQueryable<T>

 var query = (from c in Session.Query<Puppy>());

IQueryableコマンドタイムアウトなどへの明らかなアクセス権がないMSクラスです。

別のオプションは、その時点ですべてのコマンドのセッションコマンドタイムアウトを何らかの方法で設定し、その後デフォルトに戻すことですが、コマンドタイムアウトを前もって設定してそのままにしておく以外に、これを行うためのパブリックメカニズムは見当たりません。NHibernate LINQ ステートメントのタイムアウトを設定する方法

4

1 に答える 1

5

気にしないでください。Nhibernate の単体テストで例が見つかりました。彼らは IQueryable にいくつかの拡張メソッドを追加しました。

var query = (from c in Session.Query<Puppy>()).Timeout(12);
于 2014-01-02T19:45:27.007 に答える