Как конвертировать XML метаданных $ CRM Online в классы C#?
Я использовал для создания классов с ранней привязкой для Dynamics CRM с использованием CrmSvcUtil и конечной точки 2011 года.
Это все еще работает, но должно быть устаревшим, поэтому я пытаюсь понять новую конечную точку OData и использовать ее для генерации классов.
Вы можете просмотреть модель объекта XML для CRM, перейдя по соответствующему URL:
Или же вы можете просто скачать 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 просто завладела им.