NHibernate:如何根据引用实体的属性对集合进行排序

NHibernate:如何根据引用实体的属性对集合进行排序,nhibernate,Nhibernate,我想按零售商名称对活动零售商进行排序。然而,零售商是活动零售商的参考实体。我试过了orderby=“Retailer.Name”。这种分类可能吗 <class name="Campaign" table="Campaign"> <id name="Id"> <generator class="identity"/> </id> <set name="CampaignRetailers" table="CampaignRet

我想按零售商名称对活动零售商进行排序。然而,零售商是活动零售商的参考实体。我试过了
orderby=“Retailer.Name”
。这种分类可能吗

<class name="Campaign" table="Campaign">
  <id name="Id">
    <generator class="identity"/>
  </id>
  <set name="CampaignRetailers" table="CampaignRetailers"
       cascade="all-delete-orphan" inverse="true" order-by="Retailer.Name">
    <key column="CampaignId" not-null="true" />
    <one-to-many class="CampaignRetailer" />
  </set>
</class>

<class name="CampaignRetailer" table="CampaignRetailers">
  <id name="Id">
    <generator class="identity"/>
  </id> 
  <many-to-one name="Campaign" column="CampaignId" />
  <many-to-one name="Retailer" column="RetailerId" />
</class>

这是不可能的

改用客户端临时排序。例如:

sortedCampaignRetailers = campaign.CampaignRetailers
                                  .OrderBy(x => x.Retailer.Name);

对于这一点(NH 3.x+),以下各项应适用:

var=Session.QueryOver()
.JoinQueryOver(x=>x.Retailer)
.OrderBy(x=>x.Name).Asc
.List();

我通常改用,并使用如下映射按顺序对集合进行排序

 <bag name="CampaignRetailers" inverse="true" cascade="delete" order-by="Name">
  <key column="CampaignId"/>
  <one-to-many class="CampaignRetailer"/>
</bag>

其中名称是活动零售商的财产。 这对我有用。 我也希望你

 <bag name="CampaignRetailers" inverse="true" cascade="delete" order-by="Name">
  <key column="CampaignId"/>
  <one-to-many class="CampaignRetailer"/>
</bag>