Я использую 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>();
}
}
Мои сопоставления Fluent NHibernate выглядят так:
public class AttributeMap : ClassMap<Attribute>
{
public AttributeMap()
{
Id(o => o.Id);
Map(o => o.Name);
}
}
public class AttributeRuleMap : ClassMap<AttributeRule>
{
public AttributeRuleMap()
{
Id(o => o.Id);
Map(o => o.RuleTypeId);
References(o => o.Attribute).Fetch.Join();
References(o => o.Station);
}
}
public class StationMap : ClassMap<Station>
{
public StationMap()
{
Id(o => o.Id);
HasMany(o => o.AttributeRules).Inverse();
}
}
Я бы хотел упорядочить список AttributeRules на Station по свойству Attribute.Name, но выполнение следующих действий не работает:
HasMany(o => o.AttributeRules).Inverse().OrderBy("Attribute.Name");
Я еще не нашел способ сделать это в отображениях. Я мог бы создать IQuery или ICriteria, чтобы сделать это для меня, но в идеале я хотел бы просто отсортировать список AttributeRules, когда я его запрашиваю.
Какой-нибудь совет, как сделать это отображение?