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

如何通过.NET版Microsoft Graph API SDK更新托管元数据(分类术语)

适用于.NET的Microsoft Graph SDK 更新TermStore术语实现方法

更新托管元数据Term的核心逻辑是必须定位到单个Term实体资源发起PATCH请求,不支持对Term集合直接执行更新操作,具体实现步骤和代码如下:

核心注意事项

  • 你当前的查询代码返回的是myIdTerm节点下的所有子Term集合,无法直接对集合发起更新请求,必须先拿到要更新的目标Term的ID,定位到单个资源节点
  • TermStore相关的实体类都位于Microsoft.Graph.TermStore命名空间下,不要误用根命名空间下的同名类,否则会出现序列化错误
  • 更新时仅需要传入你需要修改的属性即可,不需要携带全量Term字段

实现代码

1. 基础更新请求构造

// 定义要更新的Term属性
var termUpdateBody = new Microsoft.Graph.TermStore.Term
{
    // 示例:更新术语的多语言显示标签
    Labels = new List<Microsoft.Graph.TermStore.LocalizedLabel>
    {
        new Microsoft.Graph.TermStore.LocalizedLabel
        {
            Name = "更新后的术语名称",
            LanguageTag = "zh-CN",
            IsDefault = true
        },
        new Microsoft.Graph.TermStore.LocalizedLabel
        {
            Name = "Updated Term Name",
            LanguageTag = "en-US",
            IsDefault = false
        }
    },
    // 示例:更新术语描述
    Descriptions = new List<Microsoft.Graph.TermStore.LocalizedDescription>
    {
        new Microsoft.Graph.TermStore.LocalizedDescription
        {
            Description = "更新后的术语说明文本",
            LanguageTag = "zh-CN"
        }
    }
    // 如需更新自定义属性,给Properties字段赋值即可,值类型需和TermStore中定义的属性类型匹配
};

// 发起更新请求
// 注意:如果更新的是根级Term,路径到.Terms[rootTermId]即可
// 如果更新的是子级Term,需要追加一层.Terms[childTermId]
var updatedTerm = await graphClient
    .Sites[mySite]
    .TermStore
    .Groups[myGroup]
    .Sets[mySet]
    .Terms[targetRootTermId]
    // 子Term更新时取消注释下一行
    // .Terms[targetChildTermId]
    .Request()
    .UpdateAsync(termUpdateBody);

2. 适配你现有查询代码的写法

你已经查询到了父Term下的子Term集合,可以先从集合中匹配到目标子Term,再取ID构造更新请求:

// 你原有查询子Term集合的代码
var childTerms = graphClient
    .Sites[mySite]
    .TermStore
    .Groups[myGroup] 
    .Sets[mySet]
    .Terms[myIdTerm]
    .Terms
    .Request()
    .GetAsync()
    .Result;

// 匹配到你要更新的目标子Term
var targetChildTerm = childTerms.First(t => t.Id == myTargetChildTermId);

// 构造子Term更新请求
var updatedResult = await graphClient
    .Sites[mySite]
    .TermStore
    .Groups[myGroup]
    .Sets[mySet]
    .Terms[myIdTerm]
    .Terms[targetChildTerm.Id]
    .Request()
    .UpdateAsync(termUpdateBody);

常见报错排查

  • 返回404:检查Term路径层级是否正确,根Term和子Term的路径层级差一级,ID传错、层级缺失都会触发资源不存在错误
  • 返回400:检查传入的更新字段格式是否正确,比如LocalizedLabel必须指定默认标签、语言标签符合格式要求
  • 序列化错误:检查是否用错了Term实体类的命名空间,必须使用Microsoft.Graph.TermStore.Term类型作为更新请求的body

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:48:24