订购复杂的对象

时间:2015-05-26 23:52:56

标签: c# linq odata

我需要执行复杂的查询,例如:

(from e in _dataContext.Entity.Expand("RelationA/RelationB")
select e)
.OrderBy(x => x.RelationA.RelationB.Property)
.ThenBy(x => x.RelationA.Property)
.ThenBy(x => x.Property)
.Skip(0).Take(10);

(from e in _dataContext.Entity.Expand("RelationA/RelationB")
orderby e.RelationA.RelationB.Property, e.RelationA.Property, e.Property
select e)
.Skip(0).Take(10);

上面给出了一个服务器错误,说明无法执行该过程。

如果仅按第一关系和属性进行排序,则没有问题,就是当我在订单中放置两个关系时。

服务器端使用:Microsoft.Data.Services 5.6.0.0

使用客户端:Microsoft.Data.OData 5.6.4.0

可以执行此类查询,或者说不合适,谢谢。

堆栈追踪:

   en System.Data.Services.Client.DataServiceRequest.Execute[TElement](DataServiceContext context, QueryComponents queryComponents)
   en System.Data.Services.Client.DataServiceQuery`1.Execute()
   en System.Data.Services.Client.DataServiceQuery`1.GetEnumerator()
   en System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   en System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   en Sigap.Wpf.ViewModel.GenLocalidadListViewModel.ObtenerPaginado()

有关错误的更多信息:

<?xml version="1.0" encoding="utf-8"?><m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><m:code /><m:message xml:lang="es-MX">An error occurred while processing this request.</m:message><m:innererror><m:message>No se pudo aplicar formato al nodo 'OptionalValue' para su ejecución como SQL.</m:message><m:type>System.InvalidOperationException</m:type><m:stacktrace>   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitOptionalValue(SqlOptionalValue sov)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitSearchedCase(SqlSearchedCase c)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitWithParens(SqlNode node, SqlNode outer)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitUnaryOperator(SqlUnary uo)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitSearchedCase(SqlSearchedCase c)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitWithParens(SqlNode node, SqlNode outer)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitUnaryOperator(SqlUnary uo)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitSearchedCase(SqlSearchedCase c)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitRowNumber(SqlRowNumber rowNumber)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitRow(SqlRow row)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitSelect(SqlSelect ss)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitAlias(SqlAlias alias)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.VisitSelect(SqlSelect ss)&#xD;
   en System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Visitor.Format(SqlNode node, Boolean isDebug)&#xD;
   en System.Data.Linq.SqlClient.SqlFormatter.Format(SqlNode node)&#xD;
   en System.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape, Type resultType, SqlNode node, ReadOnlyCollection`1 parentParameters, SqlNodeAnnotations annotations)&#xD;
   en System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)&#xD;
   en System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)&#xD;
   en System.Data.Linq.DataQuery`1.System.Collections.IEnumerable.GetEnumerator()&#xD;
   en System.Data.Services.Internal.ProjectedWrapper.EnumerableWrapper.GetEnumerator()&#xD;
   en System.Data.Services.WebUtil.GetRequestEnumerator(IEnumerable enumerable)&#xD;
   en System.Data.Services.QueryResultInfo.MoveNext()&#xD;
   en System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService, IODataResponseMessage responseMessage)&#xD;
   en System.Data.Services.DataService`1.HandleRequest()</m:stacktrace></m:innererror></m:error>

0 个答案:

没有答案