NHibernate'in ICriteria
API'sini kullanarak rasgele bir satır seçebilir miyim?NHibernate'in ICriteria API'sini kullanarak bir Rasgele Satır nasıl seçerim?
6
A
cevap
13
Aynen cundh2o'nun dediği gibi, DBMS'ye özgüdür. Ancak, Sipariş sınıfını alt sınıflara ayırabilir ve kendi özel siparişlerinizi tanımlayabilirsiniz. Örneğin, SQL Server:
public class RandomOrder: Order {
public RandomOrder() : base("", true) {}
public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery) {
return new SqlString("newid()");
}
}
1
ICriteria'yı kullanmayacaksanız, db sağlayıcınız tarafından sağlanan Rastgele işlevini kullanmak için daha fazla esneklik sağlayabileceğinden, rastgele bir sıra seçmek için HQL kullanmanızı öneririz.
IQuery q = NHibernateSession.CreateQuery("your hql statement here")
2.1.2 uyumlu: Genel kılma SqlString ToSqlString (ICriteria kriterlerine ICriteriaQuery criteriaQuery) {yeni SQLString ("NEWID()") geri ; } – mxmissile
@mxmissile: alkışlar, cevabımı güncelledim. –
Bunun gibi Newid kullanımı orta boydan büyük tablolara kadar korkunç performansa yol açar. – UpTheCreek