#nhibernate
#nhibernate
Вопрос:
Я хотел бы отсортировать CampaignRetailers по Retailer.Name. Однако Retailer является объектом, на который ссылается CampaignRetailers. Я пробовал order-by="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>
Ответ №1:
Это невозможно.
Вместо этого используйте сортировку adhoc на стороне клиента. Например:
sortedCampaignRetailers = campaign.CampaignRetailers
.OrderBy(x => x.Retailer.Name);
Ответ №2:
Обычно я использую вместо этого и упорядочиваю коллекцию с помощью order-с помощью сопоставления, подобного следующему.
<bag name="CampaignRetailers" inverse="true" cascade="delete" order-by="Name">
<key column="CampaignId"/>
<one-to-many class="CampaignRetailer"/>
</bag>
где Name является свойством CampaignRetailers.
У меня это работает.
Я также надеюсь на вас.
Ответ №3:
Для этого должно нормально работать следующее (NH 3.x ):
var retailers = Session.QueryOver<CampaignRetailer>()
.JoinQueryOver(x => x.Retailer)
.OrderBy(x => x.Name).Asc
.List<CampaignRetailer>();