有人可以解释为什么MsSql2012Dialect上的NHibernate生成服务器无法处理的查询吗?当没有明确指定排序时,它将以这种方式构建查询。

...
ORDER BY CURRENT_TIMESTAMP
OFFSET 0 ROWS FETCH FIRST 10 ROWS ONLY

最佳答案

根据建议,这是在jira中注册的未解决的错误,这是我的解决方法:

public class MyMsSql2012Dialect : MsSql2012Dialect
{
    public override SqlString GetLimitString(SqlString querySqlString, SqlString offset, SqlString limit)
    {
        var result = base.GetLimitString(querySqlString, offset, limit);

        return result.Replace("ORDER BY CURRENT_TIMESTAMP", "ORDER BY 1");
    }
}

09-11 19:45