小编val*_*lps的帖子

WebAPI,oData和RavenDb - 抛出$ top和$ skip的错误

我正在使用WebAPI从RavenDb返回一组基本的Supplier对象

供应商类别是:

public class Supplier
{
    public string Id { get; set; }
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

WebAPI方法是:

[Queryable]
public IQueryable<Supplier> Get()
{
    using (var session = _store.OpenSession())
    {
        return session.Query<Supplier>();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我打电话http://localhost:8083/api/suppliers?$orderby=Id%20desc或http://localhost:8083/api/suppliers?$filter=Title%20eq%20'Test' 一切正常.但是,每当我使用$ top或$ skip时,我都会遇到异常:

无法将类型为"System.Linq.Expressions.PropertyExpression"的对象强制转换为"System.Linq.Expressions.ConstantExpression".

如果我使用ToList()将整个集合返回到内存中它工作正常,所以看起来像RavenDb延迟执行查询的问题.

我正在使用RavenDb.Client 2.0.2.2261的最新稳定版本.

有没有其他人有这个问题或有解决方案?

堆栈跟踪是:

   at Raven.Client.Linq.RavenQueryProviderProcessor`1.VisitQueryableMethodCall(MethodCallExpression expression) in c:\Builds\RavenDB-Stable\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 994
   at Raven.Client.Linq.RavenQueryProviderProcessor`1.VisitMethodCall(MethodCallExpression expression, Boolean negated) in c:\Builds\RavenDB-Stable\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 693
   at Raven.Client.Linq.RavenQueryProviderProcessor`1.VisitExpression(Expression expression) in c:\Builds\RavenDB-Stable\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 140
   at Raven.Client.Linq.RavenQueryProviderProcessor`1.GetLuceneQueryFor(Expression expression) in c:\Builds\RavenDB-Stable\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 1318
   at Raven.Client.Linq.RavenQueryProviderProcessor`1.Execute(Expression expression) in …
Run Code Online (Sandbox Code Playgroud)

odata ravendb asp.net-web-api

5
推荐指数
1
解决办法
1095
查看次数

标签 统计

asp.net-web-api ×1

odata ×1

ravendb ×1