使用带有空备用键的Dynamics 365 Web API检索记录

时间:2018-04-24 08:30:16

标签: dynamics-crm dynamics-crm-365 dynamics-crm-webapi microsoft-dynamics-webapi

问题

我尝试使用其中键属性为null的Web API从Dynamics 365查询记录。

方法

出于测试目的,我创建了一个具有字符串属性,整数属性和十进制属性的实体。然后我创建了一个备用键并将这三个属性放入其中,使这些属性组合成为唯一的。然后我创建了一些记录。

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

{ "my_string_key": "s1", "my_integer_key": 1, "my_decimal_key": 1.23 }

并像这样查询:

/my_entities(my_string_key='s1',my_integer_key=1,my_decimal_key=1.23)

这将返回所需的记录。

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

{ "my_integer_key": 1, "my_decimal_key": 1.23 } { "my_string_key": "s1", "my_decimal_key": 1.23 } { "my_string_key": "s1", "my_integer_key": 1 }

注意每条记录如何缺少其中一个关键属性,这有效地将其保留为空。

我尝试使用=null=empty=''==Microsoft.OData.Core.ODataNullValue,但没有任何作用。我试着像这样查询它们:

/my_entities(my_string_key=null,my_integer_key=1,my_decimal_key=1.23) /my_entities(my_string_key='s1',my_integer_key=null,my_decimal_key=1.23) /my_entities(my_string_key='s1',my_integer_key=1,my_decimal_key=null)

我也尝试在其中省略null属性,如下所示:

/my_entities(my_integer_key=1,my_decimal_key=1.23) /my_entities(my_string_key='s1',my_decimal_key=1.23) /my_entities(my_string_key='s1',my_integer_key=1)

这些都不起作用。任何人都可以提供解决方案吗?

最后的话

我知道关键属性不应该是空的,因为它不是关键属性的关键点。然而,我的方案需要处理这个特定情况。

我也知道我可以使用$ filter参数,但我想要一个解决方案,而不必诉诸于此"解决方法"。毕竟,这是一个关键,我希望将其视为一个。

1 个答案:

答案 0 :(得分:0)

我认为您的努力证明关键属性不能为空。所以,时间换另一种方法。

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

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