Почему владельцы EntitySet не представлены в метаданных Dynamics CRM?

Используя odata-client-microsoft-Dynamics, я генерирую java-код как клиент для Dynamics CRM OData API. Основа генерации кода - это метаданные, определенные в https://PROJECT.crm6.dynamics.com/api/data/v9.1/$metadata?format=xml.

В метаданных я вижу около 600 элементов NavigationPropertyBinding, которые нацелены на владельцев EntitySet, но этот EntitySet не определен в метаданных (и нет импорта, чтобы предположить, что он определен где-то еще). На мой взгляд, метаданные не работают, может ли кто-нибудь сказать мне, где найти определение владельцев EntitySet, или объяснить, почему оно отсутствует в метаданных?

Обратите внимание, что я подтвердил, что этот набор EntitySet отсутствует в метаданных Dynamics CRM различных организаций, включая crm4 и crm6, оба v9.1.


person Dave Moten    schedule 21.09.2020    source источник
comment
Связанная проблема с github: github.com/simple-odata-client /Simple.OData.Client/issues/625   -  person Arun Vinoth    schedule 24.09.2020
comment
Спасибо, Арун, я все еще считаю это вопросом без ответа, согласно спецификации odata метаданные неполные. Попробую вопрос по динамике crm репозиториев в гитхабе.   -  person Dave Moten    schedule 07.10.2020
comment
конечно, мне любопытно узнать ответ, который вы там получите. пожалуйста, держите эту тему в курсе :)   -  person Arun Vinoth    schedule 07.10.2020
comment
@ArunVinoth Я посмотрел и не увидел очевидного репо, чтобы поднять вопрос. Предложения?   -  person Dave Moten    schedule 08.10.2020
comment
Обычно я создаю проблему в самой соответствующей документации, там ответят люди из MS. Наверное, этот - docs.microsoft.com/en-us/powerapps/developer/   -  person Arun Vinoth    schedule 10.10.2020
comment
Создал проблему на странице github.com/MicrosoftDocs/powerapps-docs/issues/1816   -  person Dave Moten    schedule 15.10.2020
comment
Можете ли вы ответить на этот вопрос и закрыть его? :) вы можете проголосовать, если мой ответ вам помог   -  person Arun Vinoth    schedule 25.11.2020
comment
@ArunVinoth Ваш ответ все еще не объясняет, почему не соблюдаются спецификации, поэтому я оставлю его открытым.   -  person Dave Moten    schedule 27.11.2020
comment
Кстати, вы сказали, что это не блокировщик в выпуске GitHub. Поскольку он все еще открыт в github в течение долгого времени, я подумал о том, чтобы документировать ваш обходной путь, чтобы помочь кому-то еще в сообществе.   -  person Arun Vinoth    schedule 27.11.2020


Ответы (1)


Не существует сущности с именем «владелец», но это специальная ссылка на сущность (полиморфный поиск), это может быть либо owninguser, либо owningteam. Это связано с тем, что владелец тесно связан с концепциями безопасности Dynamics - запись объекта может принадлежать системному пользователю или группе (группе пользователей).

Если вы пытаетесь получить сведения с помощью веб-API, вам необходимо развернуть оба атрибута, и один из них будет иметь значение в зависимости от владения. Узнать больше

Обновление:

Когда вы смотрите на эти привязки свойств навигации, такие цели, как лиды, счета, бизнес-единицы, являются фактическими объектами, упоминаемыми во множественном числе. Остальные - это команды и пользователи системы - они также являются фактическими сущностями, но на них ссылается Target = "owners", и любой из Пути будет заполнен платформой в зависимости от назначения.

      <NavigationPropertyBinding Path="originatingleadid" Target="leads" />
      <NavigationPropertyBinding Path="ownerid" Target="owners" />
      <NavigationPropertyBinding Path="owningbusinessunit" Target="businessunits" />
      <NavigationPropertyBinding Path="owningteam" Target="teams" />
      <NavigationPropertyBinding Path="owninguser" Target="systemusers" />
      <NavigationPropertyBinding Path="parentaccountid" Target="accounts" />

и собственное имущество:

    <NavigationProperty Name="ownerid" Type="mscrm.principal" Nullable="false" Partner="owner_accounts">
      <ReferentialConstraint Property="_ownerid_value" ReferencedProperty="ownerid" />
    </NavigationProperty>

и партнер:

    <NavigationProperty Name="owner_accounts" Type="Collection(mscrm.account)" Partner="ownerid" />

Примечание: чтобы лучше объяснить это, я сослался на вышеуказанные узлы из метаданных, но они могут быть или не быть из / доступны в одном и том же объекте.

person Arun Vinoth    schedule 21.09.2020
comment
Я ищу не сущность с именем «владелец», а набор сущностей с именем «владельцы», на который есть ссылки в 600 местах метаданных. Я хочу создать продукт, который может получить доступ ко всему API, как определено метаданными, а метаданные являются неполными. Я придумал EntitySet для владельцев как пустой с поддельным идентификатором в качестве обходного пути, предполагая, что этот EntitySet предназначен для внутреннего использования. В качестве примера, с точки зрения использования API, путь / account / owner / ... должен быть доступен, но нет определения параметров пути для сегмента владельцев. - person Dave Moten; 22.09.2020
comment
@DaveMoten для каждой сущности, такой как учетная запись, контакт - вы получите сущность, установленную как учетные записи, контакты (имена во множественном числе). Владелец / владельцы - это не обычная сущность / набор, доступный для использования. Вышеупомянутый ответ является объяснением этого. Поверьте мне. - person Arun Vinoth; 22.09.2020
comment
Спасибо, но здесь нет никакого волшебного толкования множественного числа. Если целью являются «владельцы», должно быть свойство навигации по набору сущностей, одиночному элементу или содержанию с именем owners. См. Спецификацию odata docs.oasis-open.org/odata/odata-csdl-xml/v4.01/. - person Dave Moten; 23.09.2020
comment
@DaveMoten Я не могу комментировать стандарты odata, но хорошо знаю динамику. Вы можете задать этот вопрос в хэндле MS twitter, если хотите, или в github :) - person Arun Vinoth; 23.09.2020
comment
Спасибо за участие в этом Аруне, я ценю это. - person Dave Moten; 23.09.2020