2011-10-13 37 views
1

查询我有一个数据库视图,我发布到其他系统使用WCF数据服务。数据库和WCF数据服务之间的中间层基于实体框架4.1

当我使用简单的查询查询视图而没有orderby时,我得到所有结果。如果我包括排序依据操作,查询失败,以下错误消息(UseVerboseErrors设置为true):

WCF数据服务无法响应包括orderby

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
- <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
    <code /> 
    <message xml:lang="de-DE">An error occurred while processing this request.</message> 
- <innererror> 
    <message>Object reference not set to an instance of an object.</message> 
    <type>System.NullReferenceException</type> 
    <stacktrace>at lambda_method(Closure , StatesView) at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count) at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count) at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext() at System.Linq.Enumerable.<TakeIterator>d__3a`1.MoveNext() at System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService) at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description) at System.Data.Services.DataService`1.HandleRequest()</stacktrace> 
    </innererror> 
    </error> 

我该怎么办错了吗?该视图的数据服务密钥定义在与我想要用于排序的列不同的列上。

这里查询:

http://localhost:6000/MyView?$orderby=number desc 
+0

如果我设置SetEntitySetPageSize,那么即使没有sortby操作符,查询也会失败......视图是否有问题?该视图不包含任何SortBy命令... –

+1

我假设这是使用反射提供程序,而您的MyView实体集是某种列表左右。你能否确认列表中不包含空元素? –

+0

是的,你是对的,列中应该有一些空值用于排序。排除此值后,查询开始工作。再次感谢!创建一个新的答案,以便您可以获得一些回答我的问题的要点。 –

回答

1

作为一个实体集查询根(返回IQueryable的财产)返回的枚举上面的评论中指出不得包含在它空项。如果确实有很多事情会出错,其中之一就会出现在上面的问题中。