Nhibernate中SelectList和Projection的区别是什么?

时间:2016-10-05 08:53:41

标签: nhibernate queryover

正如标题所说。

(对我而言,SelectList似乎是一种不使用Projections方法创建投影的方法。)

1 个答案:

答案 0 :(得分:4)

我想说完整的解释在文档中:

  

QueryOver允许添加任意IProjection(允许私有)   要投射的属性)。 Projections工厂类也有   允许使用Lambda表达式的重载:

IList selection =
    session.QueryOver<Cat>()
        .Select(Projections.ProjectionList()
            .Add(Projections.Property<Cat>(c => c.Name))
            .Add(Projections.Avg<Cat>(c => c.Age)))
        .List<object[]>();
     

此外,还有一个用于创建投影列表的内联语法   这不需要明确的类限定:

IList selection =
    session.QueryOver<Cat>()
        .SelectList(list => list
            .Select(c => c.Name)
            .SelectAvg(c => c.Age))
        .List<object[]>();

请参阅Check 16.6. Projections