2009-04-08 89 views

回答

13

就像cundh2o說的那樣,它是DBMS特有的。但是您可以繼承Order類並定義您自己的自定義排序。例如,對於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兼容:公衆覆蓋的SqlString ToSqlString(的ICriteria標準,ICriteriaQuery CriteriaQuery中) { 返回新的SqlString( 「NEWID()」); } – mxmissile 2010-09-17 21:14:32

1

如果不限於使用的ICriteria,我可能會建議使用HQL,而不是選擇一個隨機行,因爲它可以提供更大的靈活性,使用您的數據庫提供商提供的隨機函數。

 

IQuery q = NHibernateSession.CreateQuery("your hql statement here")