Abbiamo una query che seleziona le righe in base al valore di un'altra, ad es. il massimo Non penso che abbia molto senso, quindi ecco la domanda:Seleziona oggetto quando una proprietà è uguale a Max con 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"));
La mia domanda è, è questo il modo migliore? Qualcuno può suggerire un modo migliore?
Penso che sia il modo migliore per farlo. In SQL dovresti scrivere: SELECT e. * Da e WHERE e.Property = (SELEZIONA MAX (e2.Property) WHERE e2.EnquiryCode = e.EnquiryCode) e questo è tutto ciò che stai facendo nel tuo HQL. –
Grazie, questo mi ha aiutato con un problema simile (anche se non hai risposte!) – PandaWood