2009-04-08 87 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")