如何使用Fluent NHibernate映射按子属性排序HasMany集合

如何使用Fluent NHibernate映射按子属性排序HasMany集合,nhibernate,fluent-nhibernate,nhibernate-mapping,mapping,sql-order-by,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Mapping,Sql Order By,我正在使用Fluent NHibernate映射以下类: public abstract class DomainObject { public virtual int Id { get; protected internal set; } } public class Attribute { public virtual string Name { get; set; } } public class AttributeRule { public virtual A

我正在使用Fluent NHibernate映射以下类:

public abstract class DomainObject
{
    public virtual int Id { get; protected internal set; }
}

public class Attribute
{
    public virtual string Name { get; set; }
}

public class AttributeRule
{
    public virtual Attribute Attribute { get; set; }
    public virtual Station Station { get; set; }
    public virtual RuleTypeId RuleTypeId { get; set; }
}

public class Station : DomainObject
{
    public virtual IList<AttributeRule> AttributeRules { get; set; }

    public Station()
    {
        AttributeRules = new List<AttributeRule>();
    }
}
我还没有在映射中找到这样做的方法。我可以创建一个IQuery或ICriteria来为我完成这项工作,但理想情况下,我只希望在我请求时对AttributeRoles列表进行排序


关于如何进行这种映射有什么建议吗?

我认为OrderBy方法会接受它插入到生成的SQL子句中的字符串。那么就这么做吧

HasMany(o => o.AttributeRules).Inverse().OrderBy("Name");
其中,Name是包含属性名称的列的名称。它应该在列列表中,因为属性已连接到AttributeFile


你用另一种方法解决了这个问题吗?请共享。

我认为OrderBy方法接受它插入到生成的SQL子句中的字符串。那么就这么做吧

HasMany(o => o.AttributeRules).Inverse().OrderBy("Name");
其中,Name是包含属性名称的列的名称。它应该在列列表中,因为属性已连接到AttributeFile


你用另一种方法解决了这个问题吗?请共享。

它生成的字符串包含表别名,因此这是禁止的。它生成的字符串包含表别名,因此这是禁止的
HasMany(o => o.AttributeRules).Inverse().OrderBy("Name");