You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Umbraco V7:通过ContentTypeService删除Vorto属性时遇集合修改错误

解决Umbraco V7批量删除Vorto属性时的“Collection was modified”错误

你遇到的错误根源是:直接枚举了PropertyTypes集合的查询结果,在循环过程中删除集合内元素时,会导致原集合的枚举器失效,触发该异常。

修复方式很直接:把查询到的Vorto属性转换成独立的内存列表,让循环操作的是原集合的副本,就不会干扰枚举过程了。

修改后的代码如下:

var contentTypes = _contentTypeService.GetAllContentTypes();
foreach (var cts in contentTypes.Where(x => x.Id != 10546))
{
    // 将查询结果转为List,避免枚举原集合时修改集合
    var vortoPropsToDelete = cts.PropertyTypes.Where(x => x.PropertyEditorAlias == "Our.Umbraco.Vorto").ToList();

    foreach (var vortoProp in vortoPropsToDelete)
    {
        cts.RemovePropertyType(vortoProp.Alias);
    }
    _contentTypeService.Save(cts);
}

核心改动就是在Where查询后追加.ToList(),把延迟加载的枚举结果转换成内存中的静态列表,后续删除原PropertyTypes集合元素时,就不会影响当前的循环枚举了。

内容的提问来源于stack exchange,提问作者Dave0504

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 07:22:13