示例#1
0
        private List <SCItem> ConvertItemAndFields(SCItem sourceItem, Guid destParentId)
        {
            List <SCItem> destItems      = new List <SCItem>();
            List <SCItem> convertedItems = new List <SCItem>();

            var destItem = new SCItem()
            {
                ID         = sourceItem.ID,
                Name       = sourceItem.Name,
                MasterID   = Guid.Empty,
                ParentID   = destParentId,
                Created    = sourceItem.Created,
                Updated    = sourceItem.Updated,
                TemplateID = _itemMetadataTemplate.destTemplateId,
                Fields     = sourceItem.Fields
            };

            // Create descendant items
            destItems.AddRange(_itemFactory.CreateDescendantItems(_itemMetadataTemplate, destItem));

            if (destItems.Any())
            {
                var lastDescendantItem = destItems.FirstOrDefault(item => !destItems.Select(i => i.ParentID).Contains(item.ID));
                convertedItems = ConvertFields(destItem, lastDescendantItem);
            }
            else
            {
                convertedItems = ConvertFields(destItem, null);
            }

            destItems.AddRange(convertedItems);

            return(destItems);
        }
        public virtual void WriteDescendentItems(MetadataTemplate metadataTemplate, SCItem parentItem)
        {
            var descendantItems = _itemFactory.CreateDescendantItems(metadataTemplate, parentItem);

            foreach (SCItem descendantItem in descendantItems)
            {
                _destMasterRepository.AddOrUpdateSitecoreItem(descendantItem);
            }
        }