당신은 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"
가 여전히 작동하지 않으면, 당신은 여전히 "인스턴스화 할 수 없습니다"오류의 비교 자 클래스는 정적 시도해보십시오. 어떻게 사용되는지는 확실치 않지만 정적 호출 인 경우 트릭을 수행 할 수 있습니다.
OrderBy는 HQL/NHibernate/ActiveRecord가 아닌 SQL을 사용합니다. SQL 컬럼 이름 대신 프로퍼티 이름을 지정하셨습니까? –