2009-04-08 22 views

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()"); 
    } 
} 
+0

2.1.2 uyumlu: Genel kılma SqlString ToSqlString (ICriteria kriterlerine ICriteriaQuery criteriaQuery) {yeni SQLString ("NEWID()") geri ; } – mxmissile

+0

@mxmissile: alkışlar, cevabımı güncelledim. –

+1

Bunun gibi Newid kullanımı orta boydan büyük tablolara kadar korkunç performansa yol açar. – UpTheCreek

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")