【问题标题】:How to get projected property in NHibernate?如何在 NHibernate 中获得投影属性?
【发布时间】:2015-12-07 19:36:33
【问题描述】:
假设我正在使用 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 = ???
如何获得min 和max 的值?
【问题讨论】:
标签:
c#
nhibernate
nhibernate-criteria
【解决方案1】:
通常的方法是创建一些 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 并具有对 min 和 max 属性的类型化访问权限