C# Fluent NHibernate-Session.QueryOver中属性的列名

C# Fluent NHibernate-Session.QueryOver中属性的列名,c#,nhibernate,fluent-nhibernate,nhibernate-mapping,queryover,C#,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Queryover,我有一个Session.QueryOver,我需要保存它,我想删除列名的神奇字符串,比如: return Session.QueryOver() .SelectList(list=>list .选择(Projections.SqlGroupProjection( “糖果(“+MagicalStringForColumnName+”)作为[糖果]”, “糖果(“+MagicalStringForColumnName+”), 新[]{“糖果”}, 新的IType[]{NHibernateUtil.

我有一个Session.QueryOver,我需要保存它,我想删除列名的神奇字符串,比如:


return Session.QueryOver()
.SelectList(list=>list
.选择(Projections.SqlGroupProjection(
“糖果(“+MagicalStringForColumnName+”)作为[糖果]”,
“糖果(“+MagicalStringForColumnName+”),
新[]{“糖果”},
新的IType[]{NHibernateUtil.Int32})
我希望它是这样的:

return Session.QueryOver<T>()
    .SelectList(list => list
        .Select(Projections.SqlGroupProjection(
            "CANDIES(" + Session.GetColumnNameFromMappedProperty(propInfo.Name) +") As [Candies]",
            "CANDIES(" + Session.GetColumnNameFromMappedProperty(propInfo.Name) + ")",
            new[] { "Candies" },
            new IType[] { NHibernateUtil.Int32 }))
return Session.QueryOver()
.SelectList(list=>list
.选择(Projections.SqlGroupProjection(
“CANDIES(“+Session.GetColumnNameFromMappedProperty(propInfo.Name)+”)作为[CANDIES]”,
“糖果(“+Session.GetColumnNameFromMappedProperty(propInfo.Name)+”),
新[]{“糖果”},
新的IType[]{NHibernateUtil.Int32})

事实证明,通过使用alias和SqlFunction,可以使用表达式,而不是神奇的字符串

        object a = null;

        return Session.QueryOver<T>()
               .SelectList(l =>
                   l.Select(
                   Projections.GroupProperty(
                   Projections.SqlFunction("CANDIES", NHibernateUtil.Int32, Projections.Property(expression))
                   )).WithAlias(() => a)
对象a=null;
return Session.QueryOver()
.选择列表(l=>
l、 挑选(
1.GroupProperty(
Projections.SqlFunction(“CANDIES”,NHibernateUtil.Int32,Projections.Property(表达式))
)).带别名(()=>a)
        object a = null;

        return Session.QueryOver<T>()
               .SelectList(l =>
                   l.Select(
                   Projections.GroupProperty(
                   Projections.SqlFunction("CANDIES", NHibernateUtil.Int32, Projections.Property(expression))
                   )).WithAlias(() => a)