Получить ВСЕ метаданные объекта в Dynamics CRM

Что я хочу сделать, так это:

  1. Получить все метаданные из CRM.
  2. Сериализуйте эти метаданные и сохраните их в файле.
  3. Позже десериализуйте и передайте эти метаданные в XrmFakeEasy для модульных тестов.

Шаги 2 и 3 выполнены, но я не знаю, как выполнить шаг 1. Я провел некоторое время, копаясь в коде и в Google, но все еще в тупике.

Мы используем .Net, поэтому мне нужно прочитать ВСЕ метаданные объекта (тип: Microsoft.Xrm.Sdk.Metadata.EntityMetadata).

Если кто-нибудь знает, как это сделать, или может указать мне направление API (я не смог его найти), пожалуйста, дайте мне знать.

P.S. Этот кейс относится к локальной CRM.


person Jay    schedule 01.07.2020    source источник
comment
Это локально или онлайн?   -  person Tobias Kildetoft    schedule 01.07.2020
comment
Что вы включаете во «все метаданные»? Сущности и атрибуты? Или это формы, рабочие процессы, плагины, представление, панель инструментов и т. д.?   -  person Sergey Tunnik    schedule 01.07.2020
comment
@TobiasKildetoft это локально   -  person Jay    schedule 02.07.2020
comment
@SergeyTunnik Я имею в виду все, что может представлять класс Microsoft.Xrm.Sdk.Metadata.EntityMetadata. Я новичок в CRM, поэтому, пожалуйста, простите мое невежество (я работаю над этим;) Я считаю, что это только сущности (с их атрибутами и т. д.), поскольку это то, что документация утверждает, что EntityMetadata представляет docs.microsoft.com/en-us /точка/апи/   -  person Jay    schedule 02.07.2020


Ответы (2)


Если я правильно понял, вам нужно использовать запрос RetrieveAllEntitiesRequest. Подробнее: https://stackoverflow.com/a/29694213/2575544

person Sergey Tunnik    schedule 03.07.2020

В интересах всех, кто наткнется на этот пост, вот

Мое окончательное решение

public static EntityMetadata[] GetMetadata(IOrganizationService crmService)
{
    var request = new RetrieveAllEntitiesRequest
    {
        EntityFilters = EntityFilters.All
    };

    var response = (RetrieveAllEntitiesResponse) crmService.Execute(request);
    return response.EntityMetadata;
}
person Jay    schedule 03.07.2020