Я мог бы использовать некоторую помощь по преобразованию выражений.
У меня есть метод для класса, который выглядит следующим образом:
protected IQueryOver<TEntity, TEntity> OrderQuery<TOrderBy>(
Expression<Func<TEntity, TOrderBy>> orderBy)
{
return session.QueryOver<TEntity>().OrderBy(orderBy).Asc;
}
Это общий запрос для класса репозитория.Я хочу, чтобы все было обобщенно, поэтому я указал параметр TOrderBy, чтобы тип свойства не имел значения.Тем не менее, этот пример реализации использует NHibernate, и я пытаюсь сделать следующее:
var query = session.QueryOver<TEntity>().OrderBy(orderBy).Asc;
Однако метод OrderBy принимает параметр Expression>, и поэтому я получаю ошибку компиляции, поскольку нет гарантиичто TOrderBy будет объектом.
Есть ли способ сделать это преобразование, или я должен просто придерживаться использования объекта, а не TOrderBy?Если я придерживаюсь объекта, не теряю ли я возможность упорядочить по ValueTypes (например, DateTime)?
Спасибо за любую помощь / предложения.
РЕДАКТИРОВАТЬ: я должен упомянуть, я сохранил этоВ общем, я буду писать реализации для nhibernate и Entity Framework.Это не проблема в EF, так как он использует обычный метод Linq OrderBy.Это просто в реализации Nhibernate у меня эта проблема