NHIbernate的强类型属性

时间:2010-03-28 20:24:12

标签: nhibernate

我在我的项目中使用NHibernate,但我不喜欢使用类型属性从数据库中选择项目。 是否有可能而不是

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

像这样的事情

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

谢谢, 亚历山大。


我尝试使用NHibernate.Link,但我无法使用,因为它没有强名称:(将等待下一个版本并继续使用我的解决方案

3 个答案:

答案 0 :(得分:9)

使用NH 2,您可以使用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中,您将使用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>();

答案 1 :(得分:2)

在NHibernate trunk(3.0版本)中有两种方式:

  • 查询新标准api example
  • LINQ的

答案 2 :(得分:1)