Dynamics crm 使用具有空备用密钥的Dynamics 365 Web API检索记录 问题

Dynamics crm 使用具有空备用密钥的Dynamics 365 Web API检索记录 问题,dynamics-crm,dynamics-crm-365,dynamics-crm-webapi,microsoft-dynamics-webapi,Dynamics Crm,Dynamics Crm 365,Dynamics Crm Webapi,Microsoft Dynamics Webapi,我正在尝试使用密钥属性为null的Web API从Dynamics 365查询记录 方法 出于测试目的,我创建了一个具有string属性、integer属性和decimal属性的实体。然后,我创建了一个备用键,并将这三个属性放在其中,使这三个属性的组合独一无二。然后我创造了一些记录 使用Web API查询数据的工作与预期的一样。我用这些值创建了一个记录: { “我的字符串密钥”:“s1”, “my_integer_key”:1, “我的十进制键”:1.23 } 然后像这样查询: /my\u实体(

我正在尝试使用密钥属性为null的Web API从Dynamics 365查询记录

方法 出于测试目的,我创建了一个具有string属性、integer属性和decimal属性的实体。然后,我创建了一个备用键,并将这三个属性放在其中,使这三个属性的组合独一无二。然后我创造了一些记录

使用Web API查询数据的工作与预期的一样。我用这些值创建了一个记录:

{
“我的字符串密钥”:“s1”,
“my_integer_key”:1,
“我的十进制键”:1.23
}

然后像这样查询:

/my\u实体(my\u string\u key='s1',my\u integer\u key=1,my\u decimal\u key=1.23)

这将返回所需的记录

但是,当任何键字段为空时,我都无法使其工作,它总是返回一个400,并显示消息“请求错误-查询语法错误”。只是为了澄清:我特意创建了其中一个关键属性为空的记录,如下所示:

{
“my_integer_key”:1,
“我的十进制键”:1.23
}
{
“我的字符串密钥”:“s1”,
“我的十进制键”:1.23
}
{
“我的字符串密钥”:“s1”,
“我的整数密钥”:1
}

请注意,每个记录都缺少一个键属性,这实际上使它保持为null

我尝试使用
=null
=empty
='
=
=Microsoft.OData.Core.ODataNullValue
,但没有任何效果。我试着这样询问他们:

/my\u实体(my\u字符串\u键=null,my\u整数\u键=1,my\u十进制\u键=1.23)
/my_实体(my_string_key='s1',my_integer_key=null,my_decimal_key=1.23)
/my_实体(my_string_key='s1',my_integer_key=1,my_decimal_key=null)

我还尝试忽略其中包含null的属性,如下所示:

/my_实体(my_integer_key=1,my_decimal_key=1.23)
/我的实体(我的字符串\u key='s1',我的十进制\u key=1.23)
/my_实体(my_string_key='s1',my_integer_key=1)

这些都不管用。有人能提供解决方案吗

最后的话 我知道关键属性不应该为空,因为这不是关键属性的重点。然而,我的场景需要处理这个特定的案例


我也知道我可以只使用$filter参数,但我想要一个不必求助于这个“变通方法”的解决方案。毕竟,它是一把钥匙,我想把它当作一把。

我想你的努力证明了钥匙属性不能是空的。所以,是时候换一种方法了

创建自定义属性并用三个关键属性的组合值填充它。您可以在创建并最终更新实体消息的预操作阶段注册的插件中执行此操作


使用自定义属性作为键属性。

我不认为这证明键属性不能为空,而是证明我不知道查询空属性的方法。我想要一种查询空键属性的方法,或者我想要一份说明这是不可能的文档。其他任何东西都是一个解决办法,不能回答我的问题。谢谢你的回复。在这种情况下,你可以指定一个过滤器,不是吗?正如我所说:我也知道我可以只使用$filter参数,但我想要一个解决方案,而不必求助于这个“变通方法”。