2014-12-30 10 views
5

से उपयोगकर्ता को हटा दें एज़ूर ग्राफ़ क्लाइंट लाइब्रेरी को दिसंबर के 22 वें अपडेट किया गया था और विधि को उपयोगकर्ता को जोड़ने की विधि तय की गई थी।Azure GraphClient लाइब्रेरी समूह

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

लेकिन यह एक समूह से एक उपयोगकर्ता को हटाने के लिए संभव है?

मैं इस विधि की कोशिश की:

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

यह असफल नहीं करता, लेकिन उपयोगकर्ता समूह से नहीं हटाया गया है।

उत्तर

12

मुझे एक कामकाज मिला है। शायद यह मदद करेगा:

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

लाइब्रेरी में पहला और माइक्रोसॉफ्ट पृष्ठों पर प्रदान की गई एपीआई कॉल के पहले दो तरीकों का प्रयास किया। दोनों काम नहीं किया। ऊपर उदाहरण पूरी तरह से काम किया, धन्यवाद टॉमस! – Mario

+0

उन समूहों में मेरे लिए काम किया जिनके पास 20 से अधिक सदस्य हैं – Canela

3

मैं इसी तरह की समस्या में भाग गया और इसका निदान करने में सक्षम था। मुझे विश्वास है कि इस समूह पर निर्भर करता है कि समूह को कैसे पुनर्प्राप्त किया जाता है - क्या समूह के सदस्यों को शामिल किया गया है; आप इसके लिए .xpand() खंड का उपयोग कर सकते हैं।

उदाहरण के लिए, निम्नलिखित काम करता है:

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 वस्तुओं तक ही सीमित है तो, टॉमस से समाधान है शायद इस समय सुरक्षित है।