2015-04-24 16 views
10

Próbuję pobrać wszystkie informacje o projektach z SharePoint za pomocą modelu strony po stronie klienta (CSOM). Oto jak ja dostaję informację projekty:Jak uwzględnić wartość pola Project Project w żądaniu 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(); 

Jednak również trzeba pobrać FieldValues ​​własności z tych projektów, a ja nie mogę dowiedzieć się, jak umieścić go w tym samym zapytaniu. Znalazłem jak to zrobić na poziomie projektu po tym, jak odzyskać projektów z powyższym kodzie, jak poniżej:

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

projectContext.ExecuteQuery(); 

var fieldValues = pubProject.FieldValues; 

Teraz pubProject będzie zawierać informacje FieldValues, ale przy użyciu tego podejścia dla wszystkich projektów jest zbyt powolny (trwa 1 - 4 sekundy, aby zadzwonić do SharePoint), ponieważ muszę wykonać dodatkowe żądanie dla każdego projektu, a najlepszą praktyką dla CSOM jest wykonanie jak najmniejszej liczby połączeń.

Gdybym to FieldValues ​​w dziedzinach include coś takiego:

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)); 

Dostaję następujący błąd:

The query expression 'f.FieldValues' is not supported.

+0

Jestem fac ten sam problem tutaj. Jakieś aktualizacje dotyczące problemu? –

+0

@HellKeeper Nie ma żadnych aktualizacji na ten temat. Nie znalazłem rozwiązania. –

Odpowiedz

0

myślę, że trzeba umieścić f => f.CustomFields w wyciągu .IncludeWithDefaultProperties zamiast f.FieldValues - Ładowanie CustomFields powinno spowodować wypełnienie FieldValues