我正在尝试以下查询:
http://contoso/_vti_bin/listdata.svc/Product()?$expand=OrderDetail/Category,Repository/Country,Repository,Origin,OrderDetail/Order&$select=Id,OrderDetail/Category/Title,Repository/Country/Title,Repository/Title,Origin/Title,OrderDetail/Category/Specification,OrderDetail/Order/ImportDate我收到消息:
The request includes 8 $expand segment(s), but the maximum allowed is 7
这是不可能的,还是有其他的方法来实现这一点?
提前谢谢你。
发布于 2015-05-11 21:27:31
误差
请求包括8个$expand段,但允许的最大值为7。
,因为使用$expand运算符LINQ到SharePoint提供程序可以包含在单个请求中的相关实体的最大数量设置为7。
关于DataServiceConfiguration
绕过这种限制的一个选择是扩展SharePoint REST服务并增加DataServiceConfiguration.MaxExpandCount。
实现
ContosoListData.svc:
<%@ServiceHost language="C#" Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressDataServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Service="Contoso.SharePoint.Linq.ContosoListDataService, Contoso.SharePoint.Linq.DataService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=47134954c7026996" %>ContosoListDataService.cs:
using Microsoft.SharePoint.Linq;
using System;
using System.Data.Services;
using System.Data.Services.Common;
namespace Contoso.SharePoint.Linq
{
public class ContosoListDataService : ListDataService
{
public new static void InitializeService(DataServiceConfiguration config)
{
if (config == null)
throw new ArgumentNullException("config");
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
config.SetEntitySetPageSize("*", 1000);
config.MaxBatchCount = 1000;
config.MaxChangesetCount = 100;
config.MaxExpandCount = 14; //<-- set custom
config.MaxExpandDepth = 7;
config.MaxObjectCountOnInsert = 100;
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
config.UseVerboseErrors = true;
}
}
}https://stackoverflow.com/questions/30135198
复制相似问题