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 サーバー バージョンでうまく機能します。
いくつかの同様の投稿:
- 「'OFFSET' 付近の構文が正しくありません」 modift sql comm 2012 to 2008
- mssql サーバー 2008 のページネーション クエリで、'OFFSET' の近くに不適切な構文がスローされる
- 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();
この問題を解決するにはどうすればよいですか。私を案内してください。
不足している場合は、追加情報をお尋ねください。
ありがとう !!