2011-01-21 2 views
0

Я пытаюсь заказать запрос Linq в NHibernate.Linq-to-NHibernate OrderBy Not Working

   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. Кто-нибудь знает эту проблему?

ответ

1

QueryOver не является API LINQ. Вместо этого вы должны использовать метод расширения запроса.

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

Update

using NHibernate.Linq; 
+1

Я уже слышал о методе запроса класса ISession но Intellisence не находит его. В моем проекте я сделал ссылки на все необходимые DLL. –

+0

Это не в пространстве имен NHibernate. Я считаю, что это в NHibernate.Linq. –

+0

ну я его не нахожу. Во всем примере это должно быть в объекте ISession, может быть, оно устарело в nhibernate 3? –