Azure GraphClient库从组中删除用户

时间:2014-12-30 18:25:30

标签: c# azure

azure Graph Client库已于12月22日更新,并且将用户添加到组的方法已修复。

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

但是可以从群组中删除用户吗?

我试过这个方法:

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

它不会失败,但不会从组中删除用户。

2 个答案:

答案 0 :(得分:13)

我找到了一个解决方法。也许这会有所帮助:

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 :(得分:3)

我遇到了类似的问题并能够诊断出来。我认为的问题取决于如何检索群组 - 是否包括群组成员;您可以使用 .Expand()子句。

例如,以下 工作:

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

但请注意, .Expand()操作仅限于20个对象,因此在大多数情况下,Tomáš的解决方案目前可能更安全。