meine Anwendung hat den folgenden Code eine ToSortedList Erweiterungsmethode auf jedem IEnumberable hinzuzufügen:Nhibernate 3 - LINQ Probleme
public class SortedList<T, TResult> : List<T> {
public SortedList(IEnumerable<T> source, Expression<Func<T, TResult>> sortBy, SortDirection sortDirection) {
Initialize(source is IQueryable<T> ? source as IQueryable<T> : source.AsQueryable(), sortBy, sortDirection);
}
protected void Initialize(IQueryable<T> source, Expression<Func<T, TResult>> sortBy, System.Web.UI.WebControls.SortDirection sortDirection) {
AddRange(sortDirection == SortDirection.Ascending ? source.OrderBy(sortBy) : source.OrderByDescending(sortBy));
}
}
public static class SortingExtensions {
public static SortedList<T, TResult> ToSortedList<T, TResult>(this IEnumerable<T> source, Expression<Func<T, TResult>> sortBy, SortDirection sortDirection) {
return new SortedList<T, TResult>(source, sortBy, sortDirection);
}
}
Im alten LINQ-Provider (oben auf NHibernate 2.1) kann ich dann sagen:
session.Linq<Article>().ToSortedList(a => a.Date, SortDirection.Ascending);
jedoch den neuen in-built LINQ-Anbieter in NHibernate 3 (ändern Linq oben Query) mit dieser nicht funktioniert und der folgende Fehler ausgelöst:
„festgelegte Methode ist n ot unterstützt. " - innerhalb der Initialize-Methode
Ich würde es wirklich schätzen, wenn mir jemand zeigen könnte, wie das gemacht werden könnte.
können Sie die Stack-Trace für wo die Ausnahme in Nhibernate geworfen wird? ich habe eine Idee von dem, was die Ursache ist, aber ich dachte, dass es eine andere Ausnahme warf, und normalerweise sehe ich es nur w/extension-Methode innerhalb der Abfrage verwendet –