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

使用Microsoft.PowerPlatform.Dataverse.Client查CRM用户遇MetadataCache错误

问题原因

你错误地把OData查询语法直接传给了QueryExpression的构造函数。QueryExpression是Dataverse客户端SDK的强类型查询对象,它的构造参数只需要实体单数逻辑名(这里是systemuser,Dataverse实体逻辑名是单数,REST接口用复数是OData的约定),而不是带$select的OData URL片段。系统把你传入的systemusers?$select=...当成实体名称去元数据缓存里查找,自然找不到对应实体,所以抛出了错误。

正确代码示例

方式一:用QueryExpression(推荐,强类型更易维护)

using (var client = new ServiceClient(cert, StoreName.My, null, instanceUri, true, null, clientId, null, null))
{
    if (client.IsReady)
    {
        // 传入实体单数逻辑名构造QueryExpression
        var query = new QueryExpression("systemuser")
        {
            // 指定需要返回的字段
            ColumnSet = new ColumnSet("systemuserid", "domainname", "internalemailaddress", "fullname")
        };

        var multiple = await client.RetrieveMultipleAsync(query);
        
        // 遍历处理查询结果
        foreach (var user in multiple.Entities)
        {
            var userId = user.GetAttributeValue<Guid>("systemuserid");
            var domainName = user.GetAttributeValue<string>("domainname");
            var email = user.GetAttributeValue<string>("internalemailaddress");
            var fullName = user.GetAttributeValue<string>("fullname");
            // 这里写你的业务逻辑
        }
    }
}

方式二:用OData查询字符串(REST风格)

如果更习惯OData语法,可以用RetrieveMultipleAsync的重载直接传OData查询路径:

using (var client = new ServiceClient(cert, StoreName.My, null, instanceUri, true, null, clientId, null, null))
{
    if (client.IsReady)
    {
        // 直接传入OData查询字符串
        var multiple = await client.RetrieveMultipleAsync("systemusers?$select=systemuserid,domainname,internalemailaddress,fullname");
        
        // 遍历处理结果
        foreach (var user in multiple.Entities)
        {
            // 同样方式获取属性值
        }
    }
}
关键注意点
  • QueryExpression要用实体单数逻辑名,OData接口用复数,两者要区分开。
  • 强类型的QueryExpression更适合复杂查询(过滤、排序、关联查询等),还能避免拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:20:42