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();
它不会失败,但不会从组中删除用户。
答案 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áš的解决方案目前可能更安全。