3

ASP.NET MVC 4.0アプリケーションで次のエラーが発生しますNHibernate v4.0.0 (.Net Framework 4.0)。このエラーはNHibernate.Linqクエリに表示されます

Incorrect syntax near 'OFFSET'.
Invalid usage of the option FIRST in the FETCH statement.

この行で

Line 23:         public IList<Post> Posts(int pageNo, int pageSize)
Line 24:         {
Line 25:             var posts = _session.Query<Post>()  //here
Line 26:                                   .Where(p => p.Published) 
Line 27:                                   .Skip(pageNo * pageSize)

SOや他のサイトで同様の投稿をいくつか見つけました。しかし、彼らは2008の代わりにSQL SERVER 2012を使用することを提案しています。はい、私のSQLサーバーのバージョンは2008. ASP.NET MVC 5 (.Net Framework 4.5)しかし、私はandを使用して別のアプリケーションを作成しました。これはNHibernate v3.3.1、同じデータベースと同じ SQL サーバー バージョンでうまく機能します。

いくつかの同様の投稿:

  1. 「'OFFSET' 付近の構文が正しくありません」 modift sql comm 2012 to 2008
  2. mssql サーバー 2008 のページネーション クエリで、'OFFSET' の近​​くに不適切な構文がスローされる
  3. SSMS 2012 で「OFFSET/FETCH」を理解する

したがって、少なくとも私の場合、SQL Server のバージョンに問題があるとは思いません。

私はssmsに直接、またはコマンドオブジェクトを介してSQLクエリを実行していません。NHibernate.Linqクエリを使用しています。

完全な NHibernate クエリ:

 var posts = _session.Query<Post>()
                              .Where(p => p.Published)
                              .Skip(pageNo * pageSize)
                              .Take(pageSize)
                              .Fetch(p => p.Category)
                              .ToList();

この問題を解決するにはどうすればよいですか。私を案内してください。

不足している場合は、追加情報をお尋ねください。

ありがとう !!

4

1 に答える 1