【问题标题】:Linq-to-NHibernate OrderBy Not WorkingLinq-to-NHibernate OrderBy 不工​​作
【发布时间】:2011-06-13 03:27:24
【问题描述】:

我正在尝试订购一个 Linq to NHibernate 查询。

                var clients = (from c in session.QueryOver<Clients>()
                 orderby c.Nom
                 select c
                ).List();

它不起作用:List() 不是现有方法。 如果我这样写就可以了:

            var clients2 = (from c in session.QueryOver<Clients>()
             orderby c.Nom
             select c
            );
            var clients3 = clients2.Asc.List();

是否使用 orderby 是有区别的。 在前面的代码中,clients2 的类型是 NHibernate.Criterion.Lambda.IQueryOverOrderBuilder。

            var clients4 = (from c in session.QueryOver<Clients>()
             select c
            );

在这种情况下,clients4 的类型是 NHibernate.Criterion.QueryOver。 有人知道这个问题吗?

【问题讨论】:

    标签: nhibernate linq-to-nhibernate


    【解决方案1】:

    QueryOver 不是 LINQ API。您应该改用 Query 扩展方法。

    var clients = (from c in session.Query<Clients>()
                    orderby c.Nom
                    select c
                   ).List();
    

    更新

    using NHibernate.Linq;
    

    【讨论】:

    • 我已经听说过 ISession 类的 Query 方法,但是 Intellisence 没有找到。在我的项目中,我引用了所有必需的 dll。
    • 它不在 NHibernate 命名空间中。我相信它在 NHibernate.Linq 中。
    • 好吧,我没找到。在所有示例中,它应该在 ISession 对象中,也许它在 nhibernate 3 中已被弃用?
    • 这是NH3中新增的一种扩展方法。在以前的版本中,它是一个单独的程序集,该方法被命名为 Linq。我已经使用您需要添加到源代码的 using 语句编辑了答案。
    • 好吧,我找到了。我没有使用 NHibernate.Linq 添加,之后它就可以工作了。谢谢
    猜你喜欢
    • 2010-09-08
    • 2019-10-08
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多