如何将CRM Online $ metadata XML转换为C#类?
我用于使用CrmSvcUtil and the 2011 endpoint为Dynamics CRM生成早期绑定类。
这仍然有效,但由于被弃用,所以我想了解新的OData端点并用它来生成类。
您可以通过浏览到相应的网址查看CRM实体模型XML:
或者你也可以下载从开发商部分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.
我现在卡住,不知道这是要做到这一点的推荐方式。
微软已经表示,他们将会从2011年的端点到的WebAPI过渡SDK。我还没有听说任何关于早期界定类型的细节,但我猜他们会在此之前提出官方答复。 (也许是一个CrmWebApiUtil.exe)我相信CrmSrvUtil最初是由第三方编写的,而微软只是掌握了它的所有权。
我看过这篇文章,但它太含糊不清,无法缓解我的担忧。到目前为止,我已经放弃并使用代码生成器工具来创建DataServiceContext和关联的类,它的工作非常好。我忙于研究是否可以使用OData库自己生成这些类,以便我可以更多地了解该工具中发生的情况。如果我找到任何信息,我会在这里发布。 – Equalsk