C# 使用NHibernate HQLGenerator注册Linq扩展方法
我有一个C# 使用NHibernate HQLGenerator注册Linq扩展方法,c#,.net,linq,nhibernate,hql,C#,.net,Linq,Nhibernate,Hql,我有一个IQueryable的扩展方法,用于执行OrderByDescending,我从中获取了这个扩展方法 我得到以下错误:无法解析表达式值(NHibernate.Linq.NhQueryable``1[Measurement.Model.Test.TestPieceDto])。其中(t=>((t.ComponentId==8f136b42-8838-42ba-aee1-a33800ad2896)和(t.ProductId==22cb6d1f-1934-489a-b7d7-a3380ad285
IQueryable
的扩展方法,用于执行OrderByDescending
,我从中获取了这个扩展方法
我得到以下错误:无法解析表达式值(NHibernate.Linq.NhQueryable``1[Measurement.Model.Test.TestPieceDto])。其中(t=>((t.ComponentId==8f136b42-8838-42ba-aee1-a33800ad2896)和(t.ProductId==22cb6d1f-1934-489a-b7d7-a3380ad285c)).OrderByDescending(“CreationTime”)“:当前不支持“Common.Linq.QueryableExtensionsEx.OrderByDescending”方法的重载。
public static IOrderedQueryable<T> OrderByDescending<T>(this IQueryable<T> source, string property)
public class OrderByDescendingRuntimeHqlGenerator : IRuntimeMethodHqlGenerator
{
private readonly IHqlGeneratorForMethod _orderByDescendingGenerator = new OrderByDescendingExtension();
#region Impementation of IRuntimeMethodHqlGenerator
public bool SupportsMethod(MethodInfo method)
{
return method != null && method.Name == "OrderByDescending";
}
public IHqlGeneratorForMethod GetMethodGenerator(MethodInfo method)
{
return _orderByDescendingGenerator;
}
#endregion Impementation of IRuntimeMethodHqlGenerator
}
public class OrderByDescendingExtension : BaseHqlGeneratorForMethod
{
public OrderByDescendingExtension()
{
SupportedMethods = new[] {ReflectionHelper.GetMethodDefinition(() => QueryableExtensionsEx.OrderByDescending<object>(null, null))};
}
public override HqlTreeNode BuildHql(MethodInfo method,
Expression targetObject,
ReadOnlyCollection<Expression> arguments,
HqlTreeBuilder treeBuilder,
IHqlExpressionVisitor visitor)
{
return treeBuilder.MethodCall("OrderByDescending", visitor.Visit(arguments[0]).AsExpression());
}
}