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

使用Dynamics 365 Web API查询含空值备用键的记录

嘿,我之前也碰到过类似的场景,Dynamics 365 Web API在处理带空值的复合备用键查询时确实有一些需要注意的点,我来分享下可行的解决办法:

解决Dynamics 365 Web API查询含空值的复合备用键记录

首先得明确:Dynamics 365 Web API对复合备用键中的空值查询有特定的语法要求,直接按常规逻辑写可能会踩坑,下面分两种常用方案说明:

1. 直接通过复合键构造查询URL

假设你的实体逻辑名称是new_myentity,三个复合备用键属性分别是new_mystringkey(字符串)、new_myintegerkey(整数)、new_mydecimalkey(小数)。如果要查询new_mystringkey='s1'且new_myintegerkey为null的记录,直接用复合键的语法构造URL即可:

GET [Organization URI]/api/data/v9.2/new_myentity(new_mystringkey='s1',new_myintegerkey=null,new_mydecimalkey=null)

如果只有部分键属性为空,比如仅整数键空,其他有值,就对应修改参数:

GET [Organization URI]/api/data/v9.2/new_myentity(new_mystringkey='s1',new_myintegerkey=null,new_mydecimalkey=1.5)

注意:这里的null不需要加引号,直接写就行;如果是字符串类型的键属性为空,同样用null(比如new_mystringkey=null)。

2. 用$filter做替代查询(兼容性更强)

如果直接用复合键构造的方式在某些Web API版本里不生效,或者你需要组合更多筛选条件,可以改用$filter语法:

GET [Organization URI]/api/data/v9.2/new_myentity?$filter=new_mystringkey eq 's1' and new_myintegerkey eq null and new_mydecimalkey eq 1.5

这种方式更灵活,也能精准匹配含空值的键属性记录。

3. 几个关键注意事项

  • URL编码:如果查询参数里有特殊字符(比如空格、特殊符号),需要对URL做编码,但null和常规字符串/数值不需要额外处理。
  • 实体配置验证:确认你已经把三个属性设置为唯一组合的备用键,并且发布了实体更改,否则Web API无法识别这个复合键的查询语法。
  • 权限验证:确保你的Web API请求已经通过OAuth 2.0验证,拥有该实体的读取权限。

举个实际的例子,假设你的组织URI是https://contoso.crm.dynamics.com,要查询new_mystringkey='s1'、new_myintegerkey=null、new_mydecimalkey=2.0的记录,完整请求URL就是:

GET https://contoso.crm.dynamics.com/api/data/v9.2/new_myentity(new_mystringkey='s1',new_myintegerkey=null,new_mydecimalkey=2.0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:20:57