NHibernate HQL'in T-SQL'in TOP Anahtar Kelimesine Eşdeğer Nedir?NHibernate HQL'in T-SQL'sine Eşdeğer Anahtar Kelime
Ayrıca Söylemek için olmayan HQL yolu bana bir sınıfın ilk 15'ini veriyor?
NHibernate HQL'in T-SQL'in TOP Anahtar Kelimesine Eşdeğer Nedir?NHibernate HQL'in T-SQL'sine Eşdeğer Anahtar Kelime
Ayrıca Söylemek için olmayan HQL yolu bana bir sınıfın ilk 15'ini veriyor?
O HQL aslında oldukça kolaydır:
var top15 = session.CreateQuery("from SomeEntity")
.SetFirstResult(0)
.SetMaxResults(15)
.List<SomeEntity>();
olsa kriterler API kullanarak bunu nasıl bilmiyorum.
Kriterler API Yöntem: Bir tanımlamak gerekirse bir .Skip(someInt)
içinde
var top15 = session.QueryOver<SomeEntity>().Take(15).List();
Atış: Bütünlüğü için
ICriteria criteria = DaoSession.CreateCriteria(typeof(T));
criteria.SetFirstResult(StartIndex);
criteria.SetMaxResults(MaximumObjects);
return criteria.List<T>();
+1. Bu MaximumObjects'e bakmak zorundayım. Oldukça havalı. – BuddyJoe
MaximumObjects, SetMaxResults'a kaç nesnenin döndüğünü bildiren bir tamsayı değişkeni. Sizin durumunuzda, bunun yerine 15 kod koduna sahip olabilirsiniz, yani, kriteri.SetMaxResults (15); –
Haha ... diğer bir deyişle, örnek oluşturulduktan sonra CreateQuery() ile aynıdır. –
, burada NHibernate 3.0 tanıtılan QueryOver
API ile bunu nasıl olduğunu endeksi başlat, örneğin çağrı için.
mookid8000 yanlış bilgi veriyor.
her zaman .NET için tablonun tüm indirir ve TOP alır :(HQL ile SQL TOP N ayarlama yolu yoktur
, hangi! Düpedüz aptallık NHibernate 3.2 itibaren
sorgunun sonunda hql içinde SKIP n/TAKE n
kullanabilirsiniz sen SetMaxResults
kullanamazsınız nerede alt sorgular çok yardımcı olabilir Örneğin
:..
select l, (select u from User u where u.Location = l order by u.Date asc take 1)
from Location l
+1. Huh oldukça garip. Cevabın HQL "tünel" dizesinin bir parçası olacağını düşündüm. İlginç. – BuddyJoe
Bu yanıt aslında HQL ve ölçütler API –
yean bir melezidir.Aşağıdaki kriterlerle aynıdır ... sadece 'CreateCriteria() ' –
dotjoe