我们有一个查询,根据另一个的值选择行,即.最大 我认为这没有多大意义,所以这里是查询:
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)
我的问题是,这是最好的方法吗?有谁能建议更好的方法?
对于聚合,最好使用 SQL 而不是 HQL。仅对主要实体及其关系(非常易于维护的设计)使用 Nhibernate。存储过程是这些聚合和函数的更好位置,因为它们依赖于数据而不依赖于对象