Я использовал для создания ранних классов классов для Dynamics CRM, используя CrmSvcUtil and the 2011 endpoint.
Это все еще работает, но должно быть устарело так Я пытаюсь понять новую конечную точку OData и использовать ее для генерации классов.Как преобразовать XML-метаданные CRM Online в классы C#?
Вы можете просмотреть сущность модели 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#?
Я нашел this guide which recommends using the OData v4 Client Code Generator tool, но это кажется излишним, и я предпочел бы избегать использования инструментов, которые могут перестать работать в будущем.
Я также видел MSDN article for DataSvcUtil.exe, который может конвертировать файлы EDMX, но у меня есть XML. Я попытался изменить расширение файла, но он не будет конвертировать, он выдает ошибку:
error 7001: The 'Scale' attribute is invalid - The value 'Variable' is invalid according to its datatype ' http://schemas.microsoft.com/ado/2007/05/edm:TScaleFacet ' - The string 'Variable' is not a valid Integer value.
The string 'Variable' is not a valid Integer value.
теперь я застрял и не уверен, что является рекомендуемым способом сделать это.
Я читал об этом, но он был слишком расплывчатым и не обязывающим, чтобы облегчить мои проблемы. На данный момент я смягчился и использовал инструмент генератора кода для создания DataServiceContext и связанных классов, и он работает очень хорошо. Я занимаюсь исследованием, чтобы узнать, могу ли я сам создавать эти классы, используя библиотеку OData, чтобы я мог понять немного больше о том, что произошло в этом инструменте. Если я найду какую-либо информацию, я отправлю ее здесь. – Equalsk