如何使用NHibernate的ICriteria API选择Random Row?

时间:2009-04-08 12:15:19

标签: nhibernate random icriteria

我可以使用NHibernate的ICriteria API选择随机行吗?

2 个答案:

答案 0 :(得分:14)

正如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()");
    }
}

答案 1 :(得分:1)

如果您不仅限于使用ICriteria,我可能会建议您使用HQL来选择随机行,因为它可以更灵活地使用您的数据库提供程序提供的随机函数。


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