Esempio n. 1
0
        private static ADObjectWrapper FindGroupObject(IOguObject oguObject)
        {
            ADObjectWrapper adObject = null;
            string          objectGuid;

            if (SynchronizeContext.Current.IDMapper.SCIDMappingDictionary.ContainsKey(oguObject.ID))
            {
                var idMapping = SynchronizeContext.Current.IDMapper.SCIDMappingDictionary[oguObject.ID];
                objectGuid = idMapping.ADObjectGuid;
                adObject   = SynchronizeHelper.GetSearchResultByID(SynchronizeContext.Current.ADHelper, objectGuid, ADSchemaType.Groups).ToADOjectWrapper();

                if (adObject == null)
                {
                    //这里要删除ID映射
                    if (!SynchronizeContext.Current.IDMapper.DeleteIDMappingDictionary.ContainsKey(oguObject.ID))
                    {
                        SynchronizeContext.Current.IDMapper.DeleteIDMappingDictionary.Add(idMapping);
                    }

                    SynchronizeContext.Current.IDMapper.SCIDMappingDictionary.Remove(c => c.SCObjectID == oguObject.ID);
                }
            }

            if (adObject == null)            //通过ID没找到
            {
                adObject = SynchronizeHelper.GetSearchResultByLogonName(oguObject.Properties["LOGON_NAME"].ToString(), ADSchemaType.Groups).ToADOjectWrapper();

                if (adObject != null)
                {
                    //这里首先要判断是否已被映射过
                    if (SynchronizeContext.Current.IDMapper.ADIDMappingDictionary.ContainsKey(adObject.NativeGuid))
                    {
                        adObject = null;
                    }
                }
            }

            return(adObject);
        }