当前位置: 首页>>代码示例>>C#>>正文


C# DataProvider.GetChildIDs方法代码示例

本文整理汇总了C#中DataProvider.GetChildIDs方法的典型用法代码示例。如果您正苦于以下问题:C# DataProvider.GetChildIDs方法的具体用法?C# DataProvider.GetChildIDs怎么用?C# DataProvider.GetChildIDs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DataProvider的用法示例。


在下文中一共展示了DataProvider.GetChildIDs方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: RemoveDeletedClasses

        /// <summary>
        /// Check a folder and all sub folders in Sitecore for templates
        /// </summary>
        /// <param name="folder"></param>
        /// <param name="provider"></param>
        /// <param name="context"></param>
        /// <returns>True of the folder is deleted itself.</returns>
         private bool RemoveDeletedClasses(ItemDefinition folder, DataProvider provider, CallContext context)
         {
             var childIds = provider.GetChildIDs(folder, context);
             
             //check child items
             foreach (ID childId in childIds.ToArray())
             {
                 var childDefinition = provider.GetItemDefinition(childId, context);

                 //if child is template check the template still exists in the code base
                 if (childDefinition.TemplateID == TemplateTemplateId)
                 {
                     if (Classes.Any(x => x.Value.TemplateId == childDefinition.ID.Guid && x.Value.ClassAttribute.CodeFirst))
                         continue;

                     provider.DeleteItem(childDefinition, context);
                     childIds.Remove(childDefinition.ID);
                 }
                 // if the child is a folder check the children of the folder
                 else if (childDefinition.TemplateID == FolderTemplateId)
                 {
                     //if the folder itself is deleted then remove from the parent
                     if (RemoveDeletedClasses(childDefinition, provider, context))
                     {
                         childIds.Remove(childDefinition.ID);
                     }
                 }
             }

             //if there are no children left delete the folder 
             if (childIds.Count == 0)
             {
                 provider.DeleteItem(folder, context);
                 return true;
             }
             else
             {
                 return false;
             }

             

         }
开发者ID:csteeg,项目名称:Glass.Sitecore.Mapper,代码行数:50,代码来源:GlassDataProvider.cs

示例2: RemoveDeletedClasses

        /// <summary>
        /// Check a folder and all sub folders in Sitecore for templates
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <param name="provider">The provider.</param>
        /// <param name="context">The context.</param>
        /// <returns>True of the folder is deleted itself.</returns>
        private bool RemoveDeletedClasses(ItemDefinition folder, DataProvider provider, CallContext context)
        {
            if (folder == null) throw new ArgumentNullException("folder");
            if (provider == null) throw new ArgumentNullException("provider");
            if (context == null) throw new ArgumentNullException("context");

            var childIds = provider.GetChildIDs(folder, context);

            //check child items
            foreach (ID childId in childIds.ToArray())
            {
                var childDefinition = provider.GetItemDefinition(childId, context);

                //if child is template check the template still exists in the code base
                if (childDefinition.TemplateID == TemplateTemplateId)
                {
                    if (_typeConfigurations.Any(x => x.Value.TemplateId == childDefinition.ID && x.Value.CodeFirst))
                        continue;

                    provider.DeleteItem(childDefinition, context);
                    childIds.Remove(childDefinition.ID);
                }
                // if the child is a folder check the children of the folder
                else if (childDefinition.TemplateID == FolderTemplateId)
                {
                    //if the folder itself is deleted then remove from the parent
                    if (RemoveDeletedClasses(childDefinition, provider, context))
                    {
                        childIds.Remove(childDefinition.ID);
                    }
                }
            }

            //if there are no children left delete the folder 
            if (childIds.Count == 0 && folder.ID != GlassFolderId)
            {
                provider.DeleteItem(folder, context);
                return true;
            }
            else
            {
                return false;
            }



        }
开发者ID:bplasmeijer,项目名称:Glass.Mapper,代码行数:54,代码来源:GlassDataProvider.cs

示例3: GetChildIDsTemplate

        /// <summary>
        /// Gets the child I ds template.
        /// </summary>
        /// <param name="template">The template.</param>
        /// <param name="itemDefinition">The item definition.</param>
        /// <param name="context">The context.</param>
        /// <param name="sqlProvider">The SQL provider.</param>
        /// <returns>
        /// IDList.
        /// </returns>
        private IDList GetChildIDsTemplate(SitecoreTypeConfiguration template, ItemDefinition itemDefinition, CallContext context, DataProvider sqlProvider)
        {
            var fields = new IDList();
            var processed = new List<string>();
            var sections = template.Properties
                .Where(x => x.PropertyInfo.DeclaringType == template.Type)
                .OfType<SitecoreFieldConfiguration>()
                .Select(x => new { x.SectionName, x.SectionSortOrder });

            //If sitecore contains a section with the same name in the database, use that one instead of creating a new one
            var existing = sqlProvider.GetChildIDs(itemDefinition, context).OfType<ID>().Select(id => sqlProvider.GetItemDefinition(id, context))
                .Where(item => item.TemplateID == SectionTemplateId).ToList();

            foreach (var section in sections)
            {
                if (processed.Contains(section.SectionName) || section.SectionName.IsNullOrEmpty())
                    continue;

                var record = SectionTable.FirstOrDefault(x => x.TemplateId == itemDefinition.ID && x.Name == section.SectionName);

                if (record == null)
                {
                    var exists = existing.FirstOrDefault(def => def.Name.Equals(section.SectionName, StringComparison.InvariantCultureIgnoreCase));
                    var newId = GetUniqueGuid(itemDefinition.ID + section.SectionName);
                    const int newSortOrder = 100;
                    
                    record = exists != null ?
                        new SectionInfo(section.SectionName, exists.ID, itemDefinition.ID, section.SectionSortOrder) { Existing = true } :
                        new SectionInfo(section.SectionName, new ID(newId), itemDefinition.ID, newSortOrder);

                    SectionTable.Add(record);
                }

                processed.Add(section.SectionName);

                if (!record.Existing)
                    fields.Add(record.SectionId);
            }

            //we need to add sections already in the db, 'cause we have to 
            foreach (var sqlOne in existing.Where(ex => SectionTable.All(s => s.SectionId != ex.ID)))
            {
                SectionTable.Add(new SectionInfo(sqlOne.Name, sqlOne.ID, itemDefinition.ID, 0) { Existing = true } );
            }

            return fields;
        }
开发者ID:neilduncan,项目名称:Glass.Mapper,代码行数:57,代码来源:GlassDataProvider.cs

示例4: GetTemplateFolder

        /// <summary>
        /// Gets the template folder that the class template should be created in using the classes
        /// namespace. 
        /// </summary>
        /// <param name="nameSpace"></param>
        /// <param name="defaultFolder"></param>
        /// <param name="sqlDataProvider"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public ItemDefinition GetTemplateFolder(string nameSpace, ItemDefinition defaultFolder, DataProvider sqlDataProvider, CallContext context)
        {
            //setup folders
            IEnumerable<string> namespaces = nameSpace.Split('.');
            namespaces = namespaces.SkipWhile(x => x != "Templates").Skip(1);

            ItemDefinition containingFolder = defaultFolder;
            foreach (var ns in namespaces)
            {
                var children = sqlDataProvider.GetChildIDs(containingFolder, context);

                ItemDefinition found = null;
                foreach (ID child in children)
                {
                    if (!ID.IsNullOrEmpty(child))
                    {
                        var childDef = sqlDataProvider.GetItemDefinition(child, context);
                        if (childDef.Name == ns)
                            found = childDef;
                    }
                }

                if (found == null)
                {
                    ID newId = ID.NewID;
                    sqlDataProvider.CreateItem(newId, ns, FolderTemplateId, containingFolder, context);
                    found = sqlDataProvider.GetItemDefinition(newId, context);
                }
                containingFolder = found;
            }

            if (containingFolder == null)
            {
                Sitecore.Diagnostics.Log.Error("Failed to load containing folder {0}".Formatted(nameSpace), this);
                throw new RequiredObjectIsNullException("Failed to load containing folder {0}".Formatted(nameSpace));
            }

            return containingFolder;
        }
开发者ID:bplasmeijer,项目名称:Glass.Mapper,代码行数:48,代码来源:GlassDataProvider.cs

示例5: GetChildIDsTemplate

        /// <summary>
        /// Gets the child I ds template.
        /// </summary>
        /// <param name="template">The template.</param>
        /// <param name="itemDefinition">The item definition.</param>
        /// <param name="context">The context.</param>
        /// <param name="sqlProvider">The SQL provider.</param>
        /// <returns>
        /// IDList.
        /// </returns>
        private IDList GetChildIDsTemplate(SitecoreTypeConfiguration template, ItemDefinition itemDefinition, CallContext context, DataProvider sqlProvider)
        {
            var fields = new IDList();
            var processed = new List<string>();
            var sections = template.Properties
                .Where(x => x.PropertyInfo.DeclaringType == template.Type)
                .OfType<SitecoreFieldConfiguration>()
                .Select(x => new { x.SectionName, x.SectionSortOrder });

            //If sitecore contains a section with the same name in the database, use that one instead of creating a new one
            var existing = sqlProvider.GetChildIDs(itemDefinition, context).OfType<ID>().Select(id => sqlProvider.GetItemDefinition(id, context)).ToList();

            foreach (var section in sections)
            {
                if (processed.Contains(section.SectionName) || section.SectionName.IsNullOrEmpty())
                    continue;

                var record = SectionTable.FirstOrDefault(x => x.TemplateId == itemDefinition.ID && x.Name == section.SectionName);

                if (record == null)
                {
                    var exists = existing.FirstOrDefault(def => def.Name.Equals(section));
                    record = exists != null ?
                        new SectionInfo(section.SectionName, exists.ID, itemDefinition.ID, section.SectionSortOrder) { Existing = true } :
                        new SectionInfo(section.SectionName, new ID(Guid.NewGuid()), itemDefinition.ID, section.SectionSortOrder);

                    SectionTable.Add(record);
                }

                processed.Add(section.SectionName);

                if (!record.Existing)
                    fields.Add(record.SectionId);
            }

            return fields;
        }
开发者ID:JamesHay,项目名称:Glass.Mapper,代码行数:47,代码来源:GlassDataProvider.cs


注:本文中的DataProvider.GetChildIDs方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。