如何使用 NHibernate 的 ICriteria API 选择随机行?

发布于 2024-07-17 04:32:01 字数 60 浏览 7 评论 0原文

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

Can I select a random row using NHibernate's ICriteria API?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

影子是时光的心 2024-07-24 04:32:01

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

Just as cundh2o said, it's DBMS-specific. But you can subclass the Order class and define your own custom ordering. For example, for SQL Server:

public class RandomOrder: Order {
    public RandomOrder() : base("", true) {}
    public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery) {
        return new SqlString("newid()");
    }
}
好久不见√ 2024-07-24 04:32:01

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


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

If you are not limited to using ICriteria, I might recommend using HQL instead for selecting a random row, since it may provide more flexibility to use the Random function supplied by your db provider.


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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文