【问题标题】:Fluent NHibernate - column name from property in Session.QueryOverFluent NHibernate - 来自 Session.QueryOver 中的属性的列名
【发布时间】:2013-08-01 20:07:44
【问题描述】:

我有一个需要维护的 Session.QueryOver,我想删除列名的神奇字符串,例如:


return Session.QueryOver<T>()
    .SelectList(list => list
        .Select(Projections.SqlGroupProjection(
            "CANDIES(" + MagicalStringForColumnName +") As [Candies]",
            "CANDIES(" + MagicalStringForColumnName + ")",
            new[] { "Candies" },
            new 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 }))

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate nhibernate-mapping queryover


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多