如何在NHibernate获得投影属性

本文关键字:投影 属性 NHibernate | 更新日期: 2023-09-27 18:26:04

假设我正在使用NHibernate,并希望找到集合的一些聚合值。我有这样的东西:

var crit = session.CreateCriteria<T>();
crit.Add(someRestrictions);
crit.SetProjection(
    Projections.ProjectionList()
        .Add(Projections.Min(propertyName), "min" + propertyName)
        .Add(Projections.Max(propertyName), "max" + propertyName)
);
var ur = crit.UniqueResult();
var min = ???
var max = ???

如何获取minmax的值?

如何在NHibernate获得投影属性

通常的方法是创建一些DTO:

public class MyDto
{
    public virtual int MinProperty { get; set; }
    public virtual int MaxProperty { get; set; }
}

这可能是由此产生的查询:

var result = crit.SetProjection(
    Projections.ProjectionList()
        .Add(Projections.Min(propertyName), "MinProperty") // "min" + propertyName)
        .Add(Projections.Max(propertyName), "MaxProperty") // "max" + propertyName)
    )
    .SetResultTransformer(Transformers.AliasToBean<MyDto>())
    .UniqueResult<MyDto>();

它将返回一个具有对最小和最大属性的类型化访问权限的MyDto

相关文章: