【问题标题】:retrieve a record using Dynamics 365 Web API with empty alternate key使用具有空备用键的 Dynamics 365 Web API 检索记录
【发布时间】:2018-10-04 10:21:21
【问题描述】:

问题

我正在尝试使用关键属性为空的 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 参数,但我想要一个解决方案,而不必求助于这种“解决方法”。毕竟,它是一把钥匙,我想把它当作一把钥匙。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不认为这证明关键属性不能为空,而是证明我不知道查询空属性的方法。要么我想要一种查询空键属性的方法,要么我想要一个说明这是不可能的文档。其他任何方法都是一种解决方法,并不能回答我的问题。感谢您的回复。
    • 在这种情况下,您可以指定一个过滤器,不是吗?
    • 正如我所说:我也知道我可以只使用 $filter 参数,但我想要一个解决方案,而不必求助于这种“解决方法”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多