2011-01-04 8 views
1

こんにちは私は、私のWebアプリケーションのページと順序グリッドを埋めるためにNHiberanteを使用します。 プロジェクションを実際に導入するまではうまくいきました。NHibernate 3.0 Linqプロバイダ。 SkipとTopの後に動作しません。

これはオリジナル、作業コードです:

var data = repository 
    .Where(predicate); 
    .OrderBy(columns) 
    .Skip(amount) 
    .Take(anotherAmount); 

その後、私は自分の投影を導入し始めたのだが、あまりにもうまく働いた:

var data = repository 
     .Where(predicate); 
     .OrderBy(columns) 
     .Select(myProjection); 

を、私はすべてが私は行方不明追加機能することを幸せでしたSkip and Take、but stop - Nhibernateは、Selectがサポートされていないことを示します(NotSupportedException)。コード:

var data = repository 
     .Where(predicate); 
     .OrderBy(columns) 
     .Skip(amount) 
     .Take(anotherAmount) 
     .Select(projection); 

これはバグですか、何か間違っていますか?

+0

これは既知のバグです。 http://216.121.112.228/browse/NH-2317 –

答えて

0

私の意見では、これはNHのバグでした。 3.3.1.4000バージョンでは正常に動作します。

0

クエリを実行している.Count()を呼び出すと、クエリは存在しなくなります。カウントとリストを取得するには、2つの別個のクエリを発行する必要があります。

Future <>またはMultiQueryを使用すると、何か気になることができます。

編集: http://groups.google.com/group/nhusers/browse_thread/thread/16c296414aedc09d

ここで第2のポストは、正しい方向を指し示すことができるはずです。

+0

Count()はここには該当しません(削除するとエラーが残ります)ので、コードサンプルから削除します。 –

+0

ああ、全体のクエリを表示することができますか、リポジトリの部分も表示できますか? – Phill

+1

リポジトリだけですLinqProvider - ISession.Queryから取得

関連する問題