Nhibernate 如何对子对象的属性进行(n)休眠排序?

Nhibernate 如何对子对象的属性进行(n)休眠排序?,nhibernate,sorting,criteria,Nhibernate,Sorting,Criteria,我的域模型中有一个对象,它有一个子对象。如何使用条件查询根据子对象的属性进行排序 例如: class FooType { public int Id { get; set; } public string Name { get; set; } public BarType Bar { get; set; } } class BarType { public int Id { get; set; } public string Color { get; s

我的域模型中有一个对象,它有一个子对象。如何使用条件查询根据子对象的属性进行排序

例如:

class FooType
{
    public int Id { get; set; }
    public string Name { get; set; }
    public BarType Bar { get; set; }
}

class BarType
{
    public int Id { get; set; }
    public string Color { get; set; }
}

...

// WORKS GREAT
var orderedByName = _session.CreateCriteria<FooType>().AddOrder(Order.Asc("Name")).List();

// THROWS "could not resolve property: Bar.Color of: FooType"
var orderedByColor = _session.CreateCriteria<FooType>().AddOrder(Order.Asc("Bar.Color")).List();
class-FooType
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共BarType Bar{get;set;}
}
类BarType
{
公共int Id{get;set;}
公共字符串颜色{get;set;}
}
...
//效果很好
var orderedByName=_session.CreateCriteria().AddOrder(Order.Asc(“Name”)).List();
//抛出“无法解析属性:条。颜色:FooType”
var orderedByColor=_session.CreateCriteria().AddOrder(Order.Asc(“Bar.Color”)).List();

要启用此场景,我需要做什么?我用的是NHibernate2.1。谢谢

您需要为您的孩子添加别名或创建嵌套条件。不知道如何在NHibernate中实现这一点,在Hibernate中通过
createCriteria()
createAlias()
方法实现。 然后使用别名作为order by的前缀

更新休眠代码示例:

Criteria criteria = session.createCriteria(FooType.class);
criteria.createAlias("bar", "b");
criteria.addOrder(Order.asc("b.color"));

我想在NHibernate中,情况会非常相似,尽管属性/实体名称大写。这是NHibernate文档。

你能给我一个代码示例吗?我不太明白你的意思。