我在使用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和其他网站上发现了一些类似的帖子.但是,他们建议使用SQL SERVER 2012而不是2008.是的,我的sql server版本是2008.但是,我使用ASP.NET MVC 5(.Net Framework 4.5)和NHibernate v3.3.1创建了另一个应用程序在相同的数据库和相同的SQL服务器版本.
一些类似的帖子:
所以,我不认为问题出在我的sql server版本中,至少在我的情况下.
我没有直接执行sql查询到ssms或通过命令对象.我正在使用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的功能
查看更多关于c# – 在NHibernate.Linq查询中的’OFFSET’错误附近获取不正确的语法的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did69305