Sitecore-删除bucket子项

Sitecore-删除bucket子项,sitecore,sitecore7,Sitecore,Sitecore7,我有一个项目导入器,它删除所有项目子项目并创建新的子项目。最近我把它换成了bucket,现在我有一个删除的问题。 我使用以下方法删除项目: myItem.DeleteChildren(); 没有水桶,大约需要20分钟。现在5公里的物品大约需要1小时。我是否需要在删除前还原bucket项,然后再次同步? 删除bucketable项目的最快方法是什么?如果bucket中有很多项目,它将对每个被删除的项目执行事件。将删除代码放入事件禁用程序中: using (new EventDisabler())

我有一个项目导入器,它删除所有项目子项目并创建新的子项目。最近我把它换成了bucket,现在我有一个删除的问题。 我使用以下方法删除项目:

myItem.DeleteChildren();
没有水桶,大约需要20分钟。现在5公里的物品大约需要1小时。我是否需要在删除前还原bucket项,然后再次同步?
删除bucketable项目的最快方法是什么?

如果bucket中有很多项目,它将对每个被删除的项目执行事件。将删除代码放入事件禁用程序中:

using (new EventDisabler())
{
   myItem.DeleteChildren();
}
这将阻止所有事件的发生,并且应该更快。作为警告-执行此操作时不会立即更新索引,因此您可能希望在运行导入程序后在主数据库上运行索引更新


另一个选项是更新导入中的现有项目,而不是首先删除所有项目。

如果bucket中有很多项目,它将对每个被删除的项目执行事件。将删除代码放入事件禁用程序中:

using (new EventDisabler())
{
   myItem.DeleteChildren();
}
这将阻止所有事件的发生,并且应该更快。作为警告-执行此操作时不会立即更新索引,因此您可能希望在运行导入程序后在主数据库上运行索引更新


另一个选项是更新导入中的现有项,而不是首先删除所有项。

我猜,您的删除现在需要更长的时间,因为bucket在删除时正在更新索引。虽然您可以通过禁用.DeleteChildren调用周围的事件来加快运行速度,但仍然需要更新这些索引才能使bucket正常运行

因此,要回答您的问题,没有办法在保持完整功能的同时加快速度

如果要在实际操作中对此进行测试,请尝试以下操作:

using(new EventDisabler()) myItem.DeleteChildren();
它应该将删除速度提高到以前的水平,但代价是在建立索引之前,一个无法正常工作的桶


我建议您采用集成方法,不需要完全删除和重建项目存储

我的猜测是,您的删除现在需要更长的时间,因为bucket在删除时正在更新索引。虽然您可以通过禁用.DeleteChildren调用周围的事件来加快运行速度,但仍然需要更新这些索引才能使bucket正常运行

因此,要回答您的问题,没有办法在保持完整功能的同时加快速度

如果要在实际操作中对此进行测试,请尝试以下操作:

using(new EventDisabler()) myItem.DeleteChildren();
它应该将删除速度提高到以前的水平,但代价是在建立索引之前,一个无法正常工作的桶


我建议您采用集成方法,不需要完全删除和重建项目存储

你可以更进一步。通过禁用所有三个,我可以在几分钟内导入30k

using (new Sitecore.SecurityModel.SecurityDisabler())
{
    using (new Sitecore.Data.Events.EventDisabler())
    {
        using (new ProxyDisabler())
        {
            //delete code here
        }
    }
}

你可以更进一步。通过禁用所有三个,我可以在几分钟内导入30k

using (new Sitecore.SecurityModel.SecurityDisabler())
{
    using (new Sitecore.Data.Events.EventDisabler())
    {
        using (new ProxyDisabler())
        {
            //delete code here
        }
    }
}

在调用DeleteChildren()之前,是否可以(按编程方式)取消绑定?我不知道总共需要多长时间,但可能比现在快

在调用DeleteChildren()之前,可能(通过编程)解扣?我不知道总共需要多长时间,但可能比现在快

当我添加bucket子项时,是否必须像往常一样使用不同于myBucket.Add()方法的方法?我已经添加了一些项目,但在Sitecore内容编辑器中找不到它们。只需像普通的一样添加项目,它们就会被放入一个存储桶中。如果它们没有自动进入bucket,那么您的模板在标准值中没有设置为“bucket”。当我添加bucket子项时,是否必须像往常一样使用不同于myBucket.Add()方法的方法?我已经添加了一些项目,但在Sitecore内容编辑器中找不到它们。只需像普通的一样添加项目,它们就会被放入一个存储桶中。如果它们没有自动进入bucket,则模板在标准值中没有设置为“bucket”。是。但它也应该自己迎头赶上。最终。只是要知道;从导入时起,以及索引更新时,通过bucket API查询的任何内容都将给出不一致/错误的结果。对于索引重建:是。但它也应该自己迎头赶上。最终。只是要知道;从导入时起,以及索引更新时,通过bucket API查询的任何内容都将给出不一致/错误的结果。对于索引重建: