あなたがOrderBy in a HABTM relation here。
ソート追加見つけることができますあなたの関係の定義に、したIComparerを実装した比較子を作成し、それはトリックを行います
をあなたのコードでは、このように気にいらを与えること:。
[HasAndBelongsToMany(Table = "SupplierRecordUrls",ColumnKey = "SupplierID", ColumnRef = "RecordUrlID", Lazy = true, Sort="MyProject.RecordUrlNameComparer, MyProject.RecordUrl")]
public virtual IList<RecordUrl> RecordUrls
{
get;
set;
}
で:
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>
私はあなたの記事を:)読んでみましょう
編集:
あなたのエラーは以下のようになります。Could not instantiate comparator class [MyProject.RecordUrl.RecordUrlComparer, MyProject.RecordUrl] for collection MyProject.Supplier.RecordUrls
私はどうなるのか:
ComparerをRecordUrlの内部クラスとして作成します。
変更並び替えには:Sort = "MyProject.Supplier.RecordUrl$RecordUrlComparer, MyProject.Supplier.RecordUrl"
それはまだ動作しない場合、あなたはまだ「インスタンス化できませんでした」というエラーを取得し、はComparerクラスは静的作ってみてください。私はそれがどのように使用されているかはわかりませんが、静的な呼び出しの場合、それはトリックを行うかもしれません:)
OrderByはHQL/NHibernate/ActiveRecordではなくSQLをとります。 SQLカラム名の代わりにプロパティ名を指定したのでしょうか? –