Sql server 2008 如何在NHibernate中使用VarArgsSQLFunction按SqlFunction分组

Sql server 2008 如何在NHibernate中使用VarArgsSQLFunction按SqlFunction分组,sql-server-2008,nhibernate,Sql Server 2008,Nhibernate,我正在尝试使用QueryOver实现以下SQL查询: SELECT [Time]/1000 FROM TableName GROUP BY [Time]/1000 以下是我目前的尝试: var result = session .QueryOver<TableName> .Select(Projections.GroupProperty( Projections.SqlFunction( new VarArgsSQLFunct

我正在尝试使用QueryOver实现以下SQL查询:

SELECT [Time]/1000
FROM TableName
GROUP BY [Time]/1000
以下是我目前的尝试:

var result = session
    .QueryOver<TableName>
    .Select(Projections.GroupProperty(
        Projections.SqlFunction(
            new VarArgsSQLFunction("(", "/", ")"),
            NHibernateUtil.Int64,
            Projections.Property("Time")
            Projections.Constant(1000))
    ))
    .List<object>();
内部的例外是:

Incorrect syntax near ?.
我可以将“GroupProperty”替换为“Sum”,这样就行了。知道少了什么吗


更新
显然这是NHibernate的一个bug。另请参见。

为什么不直接使用Projections.SqlGroupProjection:

var result = session
    .QueryOver<TableName>
    .Select(Projections.SqlGroupProjection(
                        Time/1000 AS TimeValue", 
                        "Time/1000", 
                        new[]{"TimeValue"}, 
                        new[]{NHibernateUtil.Int32}))
    .List<object>();
var结果=会话
QueryOver先生
.选择(Projections.SqlGroupProjection(
时间/1000作为时间值“,
“时间/1000”,
新[]{“时间值”},
新[]{NHibernateUtil.Int32})
.List();
var result = session
    .QueryOver<TableName>
    .Select(Projections.SqlGroupProjection(
                        Time/1000 AS TimeValue", 
                        "Time/1000", 
                        new[]{"TimeValue"}, 
                        new[]{NHibernateUtil.Int32}))
    .List<object>();