Я пытаюсь извлечь всю информацию о проектах из SharePoint с помощью клиентской модели объекта (CSOM). Вот как я получаю информацию о проектах:
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 должен сделать как можно меньше вызовов.
Если я включаю FieldValues в поля include
, например:
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' не поддерживается.