繁体   English   中英

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

[英]retrieve a record using Dynamics 365 Web API with empty alternate key

问题

我正在尝试使用key属性为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参数,但是我想一个解决方案而不必求助于这种“变通方法”。 毕竟,这是关键,我想将其视为一个关键。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM