Получить запись с помощью веб-API Dynamics 365 с пустым альтернативным ключом

проблема

Я пытаюсь запросить записи из Dynamics 365 с помощью веб-API, где ключевой атрибут имеет значение null.

Подход

Для тестирования я создал сущность со строковым атрибутом, целочисленным атрибутом и десятичным атрибутом. Затем я создал альтернативный ключ и поместил в него эти три атрибута, сделав эту комбинацию атрибутов уникальной. Затем я создал несколько записей.

Запрос данных с использованием веб-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 с сообщением "Bad Request - Ошибка в синтаксисе запроса". Просто для пояснения: я специально создал записи, в которых один из ключевых атрибутов пуст, например:

{ "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)

Я также попытался опустить атрибут с нулем в нем, например:

/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 ответ

Я думаю, что ваши усилия доказывают, что ключевые атрибуты не могут быть пустыми. Итак, время для другого подхода.

Создайте пользовательский атрибут и заполните его объединенными значениями трех ключевых атрибутов. Вы можете сделать это с помощью плагина, зарегистрированного на этапе подготовки к операции создания и обновления сообщений вашей организации.

Используйте пользовательский атрибут в качестве ключевого атрибута.

Другие вопросы по тегам