我的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 和其他网站上发现了一些类似的帖子。但是,他们建议使用 SQL SERVER 2012 而不是 2008。是的,我的 sql server 版本是2008
. 但是,我使用ASP.NET MVC 5 (.Net Framework 4.5)
andNHibernate v3.3.1
,它在相同的数据库和相同的 sql server 版本中运行良好。
一些类似的帖子:
- “'OFFSET' 附近的语法不正确”修改 sql comm 2012 到 2008
- mssql server 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();
我该如何解决这个问题。请指导我。
如果不足,请向我索取更多信息。
谢谢 !!