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

如何通过C#获取Dynamics CRM中的关系元数据描述?

获取Dynamics CRM关系描述的C#实现

当然可以获取关系的描述信息!你没在OneToManyMetadata里找到是因为这个描述并不直接作为该对象的顶级属性存在,而是存储在元数据对象的**Description属性**中——这是所有MetadataBase派生类(包括OneToManyMetadata、ManyToManyRelationshipMetadata等)共有的属性,它是一个LocalizedLabel类型,包含了多语言的描述内容。

具体实现步骤

  • 使用RetrieveRelationshipRequest请求来获取目标关系的元数据
  • 从返回的RetrieveRelationshipResponse中提取关系元数据对象(根据关系类型转为OneToManyMetadata或ManyToManyRelationshipMetadata)
  • 访问元数据对象的Description属性,获取对应的本地化描述(如果有多个语言版本,可根据LanguageCode筛选)

C#代码示例

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Metadata;
using System.Linq;

public string GetRelationshipDescription(IOrganizationService service, string relationshipName)
{
    // 创建检索关系元数据的请求
    var retrieveRequest = new RetrieveRelationshipRequest
    {
        Name = relationshipName,
        MetadataId = Guid.Empty, // 如果知道MetadataId也可以用这个,优先级更高
        RetrieveAsIfPublished = true // 获取已发布的元数据
    };

    // 执行请求并获取响应
    var retrieveResponse = (RetrieveRelationshipResponse)service.Execute(retrieveRequest);
    var relationshipMetadata = retrieveResponse.RelationshipMetadata;

    // 处理一对多关系
    if (relationshipMetadata is OneToManyMetadata oneToMany)
    {
        // 获取当前用户语言对应的描述,也可指定语言代码(如1033代表英语)
        var descriptionLabel = oneToMany.Description.UserLocalizedLabel 
                               ?? oneToMany.Description.LocalizedLabels.FirstOrDefault();
        return descriptionLabel?.Label ?? "未找到描述信息";
    }
    // 处理多对多关系
    else if (relationshipMetadata is ManyToManyRelationshipMetadata manyToMany)
    {
        var descriptionLabel = manyToMany.Description.UserLocalizedLabel 
                               ?? manyToMany.Description.LocalizedLabels.FirstOrDefault();
        return descriptionLabel?.Label ?? "未找到描述信息";
    }

    return "不支持的关系类型";
}

补充说明

  • 传入的relationshipName必须是关系的架构名称(而非显示名称),可在Dynamics 365解决方案管理器的关系详情中查看
  • UserLocalizedLabel会自动返回当前登录用户语言对应的描述,无需手动指定语言代码
  • 需确保项目引用了正确的SDK包:Microsoft.CrmSdk.CoreAssemblies(或对应版本的Dynamics 365 SDK NuGet包)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:43:04