Vous pouvez trouver un OrderBy in a HABTM relation here.
Ajouter Trier à la définition de votre relation, créez un qui implémente IComparer Comparer et qui fera l'affaire
Dans votre code, qui donnera somthing comme ceci:.
[HasAndBelongsToMany(Table = "SupplierRecordUrls",ColumnKey = "SupplierID", ColumnRef = "RecordUrlID", Lazy = true, Sort="MyProject.RecordUrlNameComparer, MyProject.RecordUrl")]
public virtual IList<RecordUrl> RecordUrls
{
get;
set;
}
Avec:
public class RecordUrlNameComparer: IComparer<RecordUrl>
{
Int32 System.Collections.Generic.IComparer<RecordUrl>.Compare(RecordUrl x, RecordUrl y)
{
return new System.Collections.Comparer(System.Globalization.CultureInfo.CurrentCulture).Compare(x.Name, y.Name);
}
} // public class RecordUrlNameComparer: IComparer<RecordUrl>
Je vous laisse lire l'article :)
Edit:
Votre erreur est maintenant: Could not instantiate comparator class [MyProject.RecordUrl.RecordUrlComparer, MyProject.RecordUrl] for collection MyProject.Supplier.RecordUrls
Ce que je ferais:
Créez le Comparer en tant que classe interne de RecordUrls.
Modifier la Trier par: Sort = "MyProject.Supplier.RecordUrl$RecordUrlComparer, MyProject.Supplier.RecordUrl"
Si cela ne fonctionne toujours pas, vous obtenez toujours le « ne pouvait pas instancier » erreur, essayez de faire la classe statique Comparer. Je ne suis pas sûr comment il est utilisé, mais si c'est un appel statique, cela peut faire l'affaire :)
OrderBy prend SQL, pas HQL/NHibernate/ActiveRecord. Peut-être que vous spécifiez un nom de propriété au lieu d'un nom de colonne SQL? –