C# NHibernate变量限制与SQL 2000

C# NHibernate变量限制与SQL 2000,c#,nhibernate,sql-server-2000,C#,Nhibernate,Sql Server 2000,我正在尝试使用SQL 2000的hibernate中的Take方法。执行此操作时,会出现错误:方言不支持变量限制。 在四处搜索时,我找到了一种方法来覆盖对可变限制支持的检查,并将我的代码设置如下: return Fluently.Configure() .Database(PersistenceConfigurer("####")) .Mappings(m => m.HbmMappi

我正在尝试使用SQL 2000的hibernate中的
Take
方法。执行此操作时,会出现错误:
方言不支持变量限制。

在四处搜索时,我找到了一种方法来覆盖对可变限制支持的检查,并将我的代码设置如下:

        return Fluently.Configure()
                       .Database(PersistenceConfigurer("####"))
                       .Mappings(m => m.HbmMappings.AddFromAssembly(Assembly.Load("####")))
                       .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("####")))
                       .CurrentSessionContext<WebSessionContext>()
                       .BuildSessionFactory();
    }

    private static IPersistenceConfigurer PersistenceConfigurer(string connection)
    {
        var provider = MsSqlConfiguration.MsSql2000.ConnectionString(connection);
        provider.Dialect<FixedDialect>();
        return provider;
    } 
}
public class FixedDialect : NHibernate.Dialect.MsSql2000Dialect
{
    public override bool SupportsVariableLimit
    {
        get
        {
            return true;
        }
    }
}
但是它没有为@p0设置值,所以它回退了
第1行:“@p0”附近的语法不正确。


我能做些什么来解决这个问题吗?为什么这种方言不支持top函数?

我只需要将NHibernate更新到最新版本。4.0.3版中不存在此问题。

我认为
TOP
无法处理参数。我没有关于如何修复它的答案,所以我不是作为答案发布的。我认为@DavidCrowell是对的,除非使用2005或更高版本,否则不能参数化
TOP
值newer@AndrewWhitaker但这是真的吗?我只是直接使用sql命令启动了一个小的测试应用程序,它按照我的预期工作。也适用于SSMS。
[ select top @p0 order0_.field1 as field1_, order0_.field2 as field2_ from db.table order0_ where order0_.field3=@p1 ]
  Name:p1 - Value:LY02  Name:p2 - Value:10