我可以使用NHibernate的ICriteria
API选择随机行吗?
答案 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")