我有一个简单的项目,当我想从OData获得总和时
http://localhost:31187/api/Northwind/AppEntityType?$apply=aggregate(OptimisticLockField%20with%20max%20as%20maxOLF)
发生异常:
“message”:“无法解析表达式'$ it.AsQueryable()':目前不支持方法'System.Linq.Queryable.AsQueryable'的重载。”, “type”:“System.NotSupportedException”
Remotion.Linq抛出异常。
在使用EFCore的OData中是否真的不支持此功能,或者这是我的错误?
UPD。为了避免这种异常,有必要创建自己的类,代表你的AsQueryableNode;
public class AsQueryableNode : MethodCallExpressionNodeBase
{
public static readonly MethodInfo[] SupportedMethods = new[]
{
GetSupportedMethod (() => Queryable.AsQueryable<object> (null)),
};
public AsQueryableNode (MethodCallExpressionParseInfo parseInfo)
: base(parseInfo)
{
}
public override Expression Resolve (ParameterExpression inputParameter, Expression expressionToBeResolved, ClauseGenerationContext clauseGenerationContext)
{
// pass on expression to previous node
return Source.Resolve (inputParameter, expressionToBeResolved, clauseGenerationContext);
}
protected override QueryModel ApplyNodeSpecificSemantics (QueryModel queryModel, ClauseGenerationContext clauseGenerationContext)
{
// don't change query model
return queryModel;
}
}
然后你需要在MethodInfoBasedNodeTypeRegistry类中注册AsQueryable方法并解决问题。