在 NHibernate.Linq 查询中 'OFFSET' 附近出现语法错误
Getting Incorrect syntax near 'OFFSET' error in NHibernate.Linq query
我在使用 NHibernate v4.0.0 (.Net Framework 4.0)
的 ASP.NET MVC 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 和其他网站上发现了一些类似的 post。但是,他们建议使用 SQL SERVER 2012 而不是 2008。 是的,我的 sql 服务器版本是 2008
。但是,我使用 ASP.NET MVC 5 (.Net Framework 4.5)
和 NHibernate v3.3.1
创建了另一个应用程序,它在相同的数据库和相同的 sql 服务器版本中运行良好。
有些相似post:
- “Incorrect syntax near 'OFFSET'” modift sql comm 2012 to 2008
- Pagination query for mssql server 2008 Throwing Incorrect syntax near 'OFFSET'
- Making sense of 'OFFSET/FETCH' in SSMS 2012
所以,我认为问题不在我的 sql 服务器版本中,至少在我的情况下如此。
我没有直接向 ssms 或通过命令对象执行 sql 查询。我正在使用 NHibernate.Linq
查询。
完整的 NHibernate 查询:
var posts = _session.Query<Post>()
.Where(p => p.Published)
.Skip(pageNo * pageSize)
.Take(pageSize)
.Fetch(p => p.Category)
.ToList();
我该如何解决这个问题。请指导我。
不足之处请追问
谢谢!!
看来,NHibernate 只是被错误地指示使用与 SQL Serer 2012
相关的方言
<property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
设置为2008就可以了
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
并且它不会使用更高版本的功能Implement paging (skip / take) functionality with this query
我在使用 NHibernate v4.0.0 (.Net Framework 4.0)
的 ASP.NET MVC 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 和其他网站上发现了一些类似的 post。但是,他们建议使用 SQL SERVER 2012 而不是 2008。 是的,我的 sql 服务器版本是 2008
。但是,我使用 ASP.NET MVC 5 (.Net Framework 4.5)
和 NHibernate v3.3.1
创建了另一个应用程序,它在相同的数据库和相同的 sql 服务器版本中运行良好。
有些相似post:
- “Incorrect syntax near 'OFFSET'” modift sql comm 2012 to 2008
- Pagination query for mssql server 2008 Throwing Incorrect syntax near 'OFFSET'
- Making sense of 'OFFSET/FETCH' in SSMS 2012
所以,我认为问题不在我的 sql 服务器版本中,至少在我的情况下如此。
我没有直接向 ssms 或通过命令对象执行 sql 查询。我正在使用 NHibernate.Linq
查询。
完整的 NHibernate 查询:
var posts = _session.Query<Post>()
.Where(p => p.Published)
.Skip(pageNo * pageSize)
.Take(pageSize)
.Fetch(p => p.Category)
.ToList();
我该如何解决这个问题。请指导我。
不足之处请追问
谢谢!!
看来,NHibernate 只是被错误地指示使用与 SQL Serer 2012
相关的方言<property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
设置为2008就可以了
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
并且它不会使用更高版本的功能Implement paging (skip / take) functionality with this query