6

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

4

2 回答 2

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()");
    }
}
于 2009-04-08T23:16:24.467 回答
1

如果您不限于使用 ICriteria,我可能会建议您使用 HQL 而不是选择随机行,因为它可以提供更大的灵活性来使用您的数据库提供商提供的 Random 函数。


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

于 2009-04-08T12:28:27.647 回答