nHibernate 3.0 запросы - PullRequest
       3

nHibernate 3.0 запросы

0 голосов
/ 05 декабря 2010

Работая в течение лета nHibernate учебники попали в раздел по запросам. Кажется, с тех пор, как была сделана эта серия, произошли изменения. Поэтому я пошел в онлайн-документацию для nHB 3.0, но такой код:

IList cats = session.CreateCriteria(typeof(Cat))
            .Add(Expression.Like("Name", "Fritz%"))
            .Add(Expression.Between("Weight", minWeight, maxWeight))
            .List();

Генерирует ошибку «Имя« Выражение »не существует в текущем контексте»

Код как:

return session.CreateCriteria(typeof(DataTransfer.Customer))
            .Add(new NHibernate.Criterion.LikeExpression("Firstname", firstname))
            .Add(new NHibernate.Criterion.LikeExpression("Lastname", lastname))
            .List<Customer>();

Работает, но, похоже, отсутствует ряд методов запросов, таких как GtExpression. Актуальны ли онлайновые документы, и если да, то почему я не могу использовать Expression ... Если онлайн-документы не обновлены, то где я могу получить описание интерфейса Criterion? Спасибо

Ответы [ 2 ]

3 голосов
/ 05 декабря 2010

Вы забыли добавить using NHibernate.Criterion;.

В любом случае, класс Expression устарел. Вместо этого используйте Restrictions.

0 голосов
/ 05 декабря 2010

Странная вещь.Я все еще использую Expression. * Статические методы, и они все еще работают.Вы уверены, что используете последнюю версию NH3.0?Я использую версию Alpha 2.

Если вам нужно срочно заставить ее работать, давайте попробуем функцию QueryOver <>:

return session.QueryOver<DataTransfer.Customer>()
  .WhereRestrictionOn(u => u.Name).IsLike("Fritz%")
  .AndRestrictionOn(u => u.Weight).IsBetween(minWeight).And(maxWeight)
  .List();

Она хорошо работает для простых запросов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...