Как конвертировать XML метаданных $ CRM Online в классы C#?

Я использовал для создания классов с ранней привязкой для Dynamics CRM с использованием CrmSvcUtil и конечной точки 2011 года.
Это все еще работает, но должно быть устаревшим, поэтому я пытаюсь понять новую конечную точку OData и использовать ее для генерации классов.

Вы можете просмотреть модель объекта XML для CRM, перейдя по соответствующему URL:

https://myorg.crm4.dynamics.com/api/data/v8.1/$ metadata

Или же вы можете просто скачать XML из раздела для разработчиков в CRM:

скачать метаданные оддаты

В любом случае вы получите XML, определяющий модель сущности:

<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:Reference Uri="http://vocabularies.odata.org/OData.Community.Keys.V1.xml">
    <edmx:Include Namespace="OData.Community.Keys.V1" Alias="Keys" />
    <edmx:IncludeAnnotations TermNamespace="OData.Community.Keys.V1" />
  </edmx:Reference>
  <edmx:Reference Uri="http://vocabularies.odata.org/OData.Community.Display.V1.xml">
    <edmx:Include Namespace="OData.Community.Display.V1" Alias="Display" />
    <edmx:IncludeAnnotations TermNamespace="OData.Community.Display.V1" />
  </edmx:Reference>
  .... blah blah ....

Как мне преобразовать это в набор строго типизированных классов C#?

Я нашел это руководство, в котором рекомендуется использовать инструмент OData v4 Client Code Generator, но это кажется излишним, и я бы предпочел не использовать инструменты, которые могут перестать работать в будущем.

Я также видел статью MSDN для DataSvcUtil.exe, которая может конвертировать файлы EDMX, но у меня есть XML. Я попытался изменить расширение файла, но он не конвертируется, выдает ошибку:

ошибка 7001: недопустимый атрибут "Масштаб" - недопустимое значение "Переменная" в соответствии с его типом данных " http://schemas.microsoft.com/ado/2007/05/edm:TScaleFacet" - строка "Переменная" недопустимое целочисленное значение.
Строка "Переменная" не является допустимым целочисленным значением.

Сейчас я застрял и не уверен, какой рекомендуемый способ сделать это.

1 ответ

Microsoft заявила, что они переведут SDK с конечной точки 2011 года на WebAPI. Я не слышал никаких подробностей о том, что это значит для ранних типов, но я предполагаю, что до этого они получат официальный ответ. (может быть, CrmWebApiUtil.exe) Я считаю, что CrmSrvUtil изначально был написан третьей стороной, и Microsoft просто завладела им.

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