我尝试使用其中键属性为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参数,但我想要一个解决方案,而不必诉诸于此"解决方法"。毕竟,这是一个关键,我希望将其视为一个。
答案 0 :(得分:0)
我认为您的努力证明关键属性不能为空。所以,时间换另一种方法。
创建自定义属性并使用三个关键属性的组合值填充它。您可以在创建的预操作阶段中注册的插件中执行此操作,并最终更新实体的消息。
使用自定义属性作为键属性。