我正在使用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>();
}
}
My 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();
}
}
我想通过Attribute.Name属性在Station上订购AttributeRules列表,但是执行以下操作不起作用:
HasMany(o => o.AttributeRules).Inverse().OrderBy("Attribute.Name");
我还没有找到在映射中执行此操作的方法。我可以创建一个IQuery或ICriteria为我这样做,但理想情况下我只想在我要求时对AttributeRules列表进行排序。
有关如何进行此映射的任何建议吗?
答案 0 :(得分:0)
我认为OrderBy方法接受它插入生成的SQL子句的字符串。所以只是做
HasMany(o => o.AttributeRules).Inverse().OrderBy("Name");
“Name”是包含Attribute名称的列的名称。它应该在列列表中,因为Attribute连接到AttributeRule。
你有没有解决这个问题?请分享。