2010-03-28 5 views
3

J'utilise NHibernate dans mon projet, mais je n'aime pas utiliser les propriétés typées pour sélectionner des éléments de la base de données. Est-il possible d'avoir au lieu dePropriétés fortement typées avec NHIbernate

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

somthing comme celui-ci

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

Merci, Alexander.


J'ai essayé d'utiliser NHibernate.Link, mais je ne peux pas utiliser car il n'a pas de nom fort :(attendra prochaine version et continuer à utiliser ma solution maintenant

+0

duplicat e: http://stackoverflow.com/questions/341239/c-lambda-expressions-and-nhibernate –

Répondre

9

Avec NH 2, vous pouvez utiliser le nh lambda extensions

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, vous pouvez utiliser QueryOver

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

Ou vous pouvez utiliser NHibernate.Linq

list = (from c in session.Linq<Cat>() 
    where c.Age >= 2 && c.Age <= 8 
    orderby c.Name descending 
    select c).ToList<Cat>(); 
+0

Merci de m'avoir présenté au projet nh lambda extensions! – jwarzech

2

Dans le coffre NHibernate (version 3.0) sont deux façons:

  • sur la requête, les nouveaux critères api example
  • Linq
Questions connexes