2011-11-12 36 views
1

我在这里与一个奇怪的行为... 做一个与NHibernate作为数据库的ORM和MS SQL Server 2008的asp.net mvc3应用程序, m跑到这些exeption:NHibernate与SQL Server 2008方言不支持变量限制

System.NotSupportedException: Dialect does not support variable limits. 

的代码非常简单,经典的分页查询:

public IList<Agenzia> getAllAgenzie(int maximumRows, int startRowIndex) 
    {   
     using (var session = PersistenceManager.Istance.GetSession()) { 
      var result = (from agenzia in session.Query<Agenzia>() 
         select agenzia) 
         .Skip(startRowIndex) 
         .Take(maximumRows) 
         .ToList(); 
      return result; 
     } 
    } 

而这里的NHibernate的配置

<?xml version="1.0" encoding="utf-8" ?> 
<!-- NHibernate Configuration --> 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory name="NHibernate.xlns"> 
    <property name="dialect"> 
     NHibernate.Dialect.MsSql2008Dialect 
    </property> 
    <property name="connection.driver_class"> 
     NHibernate.Driver.SqlClientDriver 
    </property> 
    <property name="show_sql">true</property>  
    </session-factory> 
</hibernate-configuration> 

任何想法它有什么问题吗?我不能相信,NHibernate不支持这种简单的分页...

回答

1

你使用的是什么版本的NHibernate? (最新版本是3.2)

它对我没有任何问题。

而且,这是多余的:

(from agenzia in session.Query<Agenzia>() select agenzia) 

它等同于:

session.Query<Agenzia>() 
+0

它确实工作得很好...出于某种原因,申请没有感觉的话所做的更改(它曾经是MsSql2008Dialect)在配置文件中,直到我重新启动Visual Studio。一旦重新启动,问题消失 – themarcuz

+0

我签署了你的答案作为冗余建议的正确答案,即使你没有提出一个通用含义的解决方案......但对我来说是耻辱,因为没有错误:) – themarcuz