2014-12-30 10 views
5

Biblioteka klienta lazurowego Graph została zaktualizowana 22 grudnia, a metoda dodawania użytkownika do grupy została naprawiona.Biblioteka Azure GraphClient usuń użytkownika z grupy

Azure Active Directory Graph Client 2.0 - Context is not currently tracking the entity

Ale czy to możliwe, aby usunąć użytkownika z grupy?

próbowałem tej metody:

{groupObject}.Members.Remove({entityObject} as DirectoryObject); 
await myGroup.UpdateAsync(); 

To nie ulegnie uszkodzeniu, ale użytkownik nie jest usuwany z grupy.

Odpowiedz

12

Znalazłem obejście. Może to pomoże:

public void RemoveUserFromGroup(Group group, User user) 
    { 
      var internalGroup = _activeDirectoryClient.Context.CreateQuery<GraphClient.Internal.Group>("groups/" + group.ObjectId).ToList().First(); 

      var internalUser = _activeDirectoryClient.Context.CreateQuery<GraphClient.Internal.User>("users/" + user.ObjectId).ToList().First(); 

      _activeDirectoryClient.Context.DeleteLink(internalGroup, "members", internalUser); 
      _activeDirectoryClient.Context.SaveChanges();   
    } 
+1

Wypróbowano pierwsze dwa sposoby, jeden w bibliotece, a następnie wywołanie api na stronach microsoft. Obie nie działały. Powyższy przykład działał idealnie, dziękuję Tomas! – Mario

+0

pracował dla mnie w grupach, które mają więcej niż 20 członków – Canela

3

Wpadłem na podobny problem i udało mi się go zdiagnozować. Problem, który uważam, zależy od tego, w jaki sposób grupa jest pobierana - niezależnie od tego, czy członkowie grupy są uwzględnieni; możesz użyć do tego klauzuli .Expand().

Na przykład, następujące nie pracy:

group = (Group)(await _activeDirectoryClient.Groups.Where(g => g.ObjectId == groupId).Expand(g => g.Members).ExecuteSingleAsync()); 
user = (User)(await _activeDirectoryClient.Users.Where(u => u.ObjectId == userId).ExecuteSingleAsync()); 

group.Members.Remove(user); 
await group.UpdateAsync(); 

Należy jednak zauważyć, że .Expand() operacji jest ograniczony do przedmiotów 20, a więc w większości przypadków, roztwór z Tomas prawdopodobnie bezpieczniej w tej chwili.

Powiązane problemy