Извлечение классов из ODataV4 метаданных XML в .NET-ядро - PullRequest
0 голосов
/ 04 декабря 2018

Я скачал файл ODataV4Metadata.xml из Microsoft Dynamics 365. Этот файл содержит много тегов EntityType, в которых описаны классы.Для справки, вот так (частично) это выглядит:

<Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="Microsoft.Dynamics.CRM" Alias="mscrm">
            <EntityType Name="crmbaseentity" Abstract="true" />
            <EntityType Name="accountleads" BaseType="mscrm.crmbaseentity">
                <Key>
                    <PropertyRef Name="accountleadid" />
                </Key>
                <Property Name="accountleadid" Type="Edm.Guid" />
                <Property Name="overriddencreatedon" Type="Edm.DateTimeOffset" />
                <Property Name="timezoneruleversionnumber" Type="Edm.Int32" />
                <Property Name="importsequencenumber" Type="Edm.Int32" />
...etc

Это должно, например, создать класс с именем Accountleads со свойствами, такими как

[DataMember(Name = "overriddencreatedon")]
        public System.DateTimeOffset? Overriddencreatedon
        {
            get
            {
                return this._Overriddencreatedon;
            }
            set
            {
                this._Overriddencreatedon = value;
            }
         }

As I 'Работая в .NET-ядре, это кажется довольно невозможным.Мне удалось сгенерировать ОГРОМНЫЙ (100 тыс. Строк кода) файл, состоящий из всего EntityTypes с большим количеством комментариев.Тем не менее, кажется, что я не могу сделать это в .NET-ядре, хотя я могу использовать сгенерированные классы.Вторая проблема заключается в том, что он генерирует только один файл со всеми классами в нем (и он не включает в себя все пространства имен, предварительно используя ключевое слово using)

Существует ли какой-либо инструмент, обладающий большей гибкостью,работает в .NET-ядре и генерирует классы в отдельных файлах?Поиск в Google дает множество решений в ASP.NET и .NET v4.

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


Источники, которые я проверял:

1 Ответ

0 голосов
/ 05 декабря 2018

Встроенный инструмент для создания прокси-классов с ранней привязкой: CrmSvcUtil .

Дэрил ЛаБар написал Генератор ранней привязки для XrmToolbox , который, как мне кажется, использует CrmSvcUtil.

Есть коммерческая надстройка VS для D365 под названием XrmToolkit , которая включает в себя возможность создавать прокси-классы (используя собственный алгоритм, поэтому ониотличаются от классов, которые генерирует CrmSvcUtil).Это инструмент, который я использую, и он создает каждый класс в виде отдельного файла.

В качестве примечания, Расширения разработчика D365 Джейсона Латтимера имеют много полезных функций, но я нене верю, что он имеет встроенную генерацию прокси-классов.

...