当属性等于Max with NHibernate时选择对象

Chr*_*nal 11 c# nhibernate

我们有一个查询,根据另一个的值选择行,即.最大 我认为这没有多大意义,所以这里是查询:

var deatched = DetachedCriteria.For<Enquiry>("e2")
   .SetProjection(Projections.Alias(Projections.Max("Property"), "maxProperty"))
   .Add(Restrictions.EqProperty("e2.EnquiryCode", "e.EnquiryCode"));

session.CreateCriteria(typeof(Enquiry), "e")
   .Add(Subqueries.PropertyEq("Property", deatched))
   .AddOrder(Order.Asc("EnquiryCode"));
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是最好的方法吗?有谁能建议更好的方法?

Sle*_*idi 1

对于聚合,最好使用 SQL 而不是 HQL。仅对主要实体及其关系(非常易于维护的设计)使用 Nhibernate。存储过程是这些聚合和函数的更好位置,因为它们依赖于数据而不依赖于对象