Сильно типизированные свойства с NHIbernate - PullRequest
3 голосов
/ 29 марта 2010

Я использую NHibernate в своем проекте, но я не люблю использовать типизированные свойства для выбора элементов из базы данных.Возможно ли иметь вместо

session.CreateCriteria(typeof(IEntry)).AddOrder(Order.Desc("Alias"))

что-то подобное

session.CreateCriteria(typeof(IEntry)).AddOrder(Order.Desc(x=>x.Alias))

Спасибо, Александр.


Я пытался использовать NHibernate.Link, ноЯ не могу использовать, потому что у него нет строгого имени :( Буду ждать следующей версии и продолжу использовать мое решение сейчас

Ответы [ 3 ]

9 голосов
/ 29 марта 2010

С NH 2 вы можете использовать nh лямбда-расширения

list = session.CreateCriteria(typeof(Cat))
    .Add<Cat>( c => c.Age >= 2 && c.Age <= 8 )
    .AddOrder<Cat>( c => c.Name, Order.Desc )
    .List<Cat>();

В NH 3 вы должны использовать QueryOver

list = session.QueryOver<Cat>()
    .WhereRestrictionOn(c => c.Age).IsBetween(2).And(8)
    .OrderBy(c => c.Name).Desc
    .List<Cat>();

Или вы можете использовать NHibernate.Linq

list = (from c in session.Linq<Cat>()
    where c.Age >= 2 && c.Age <= 8
    orderby c.Name descending
    select c).ToList<Cat>();
2 голосов
/ 29 марта 2010

В стволе NHibernate (версия 3.0) есть два способа:

  • Запрос окончен, новые критерии API пример
  • Linq
1 голос
/ 29 марта 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...