如何在CSOM请求中包含Project的FieldValues

时间:2015-04-24 14:44:18

标签: sharepoint sharepoint-2013 csom

我尝试使用客户端对象模型(CSOM)从SharePoint中提取所有项目信息。以下是我获取项目信息的方式:

projectContext.Load(projectContext.Projects,
    c =>
        c.Where(p => p.Id == new Guid(id))
            .IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
                f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description));

projectContext.Load(projectContext.LookupTables, c => c.Include(f => f.Id, f => f.Entries));
projectContext.Load(projectContext.Web.SiteUsers);
projectContext.ExecuteQuery();

但是,我还需要从这些项目中检索FieldValues属性,而我无法弄清楚如何将它包含在同一个查询中。在我从上面的代码中检索项目后,我发现如何在项目级别上执行此操作,如下所示:

var pubProject = project.IncludeCustomFields;
projectContext.Load(pubProject);
projectContext.Load(pubProject.CustomFields);

projectContext.ExecuteQuery();

var fieldValues = pubProject.FieldValues;

现在,pubProject将包含FieldValues信息,但是对所有项目使用该方法变得太慢(调用SharePoint需要1到4秒),因为我需要为每个项目和最佳实践提出额外请求CSOM尽可能少打电话。

如果我在include字段中包含FieldValues,请执行以下操作:

projectContext.Load(projectContext.Projects,
    c =>
        c.Where(p => p.Id == new Guid(id))
            .IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
                f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description, f => f.FieldValues));

我收到了以下错误:

  

查询表达式&f; .FieldValues'不受支持。

1 个答案:

答案 0 :(得分:0)

我认为您需要将f => f.CustomFields放入.IncludeWithDefaultProperties语句而不是f.FieldValues - 加载CustomFields应该会导致FieldValues被填充