如何用NHibernate进行TABLESAMPLE?

时间:2011-10-24 20:16:19

标签: sql-server nhibernate

我想添加一个特定的SQL到1查询,该查询仅适用于SQL Server。怎么做:

标准:

        Session
            .CreateCriteria<User>()
            .Add(Expression.Sql("TABLESAMPLE (100 PERCENT)"))
            .SetMaxResults(count)
            .List<User>();

生成的SQL:

SELECT
     TOP (6)
      this_.user_id
FROM users this_
WHERE TABLESAMPLE (100 PERCENT)

预期SQL:

SELECT
     TOP (6)
      this_.user_id
FROM users this_
TABLESAMPLE (100 PERCENT)

WHERE关键字不应存在。怎么做?

10倍

1 个答案:

答案 0 :(得分:1)

为什么要使用ICriteria抽象而不是SQL,如果你打算使用普通的SQL呢?只需使用Session.CreateSqlQuery(...)并使用您的原生查询即可。

使用该工具仅仅是为了使用它(在某种情况下以某种方式滥用它)没有任何意义。 ICriteria更适合实体查询,而不适用于数据库端操作。