2011-05-30 95 views
1

我想通過Retailer.Name對CampaignRetailers進行排序。但零售商是CampaignRetailers上的參考實體。我試過order-by="Retailer.Name"。這種排序可能嗎?NHibernate:如何通過被引用實體的屬性對集合進行排序

<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> 

回答

2

這是不可能的。

改爲使用客戶端自組織排序。例如:

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

以下應工作的優良此(NH 3.X +):

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

我通常使用代替我通過訂單使用如下的映射與命令集合。

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

其中名稱是CampaignRetailers的財產。 這適用於我。 我希望對你也有幫助。

相關問題