1

我曾经使用CrmSvcUtil 和 2011 端点为 Dynamics CRM 生成早期绑定类。
这仍然有效,但由于被弃用,所以我试图了解新的 OData 端点并使用它来生成类

您可以通过浏览到相应的 URL 查看 CRM 的实体模型 XML:

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

或者,您也可以从 CRM 的开发人员部分下载 XML:

下载 odata 元数据

无论哪种情况,您最终都会得到定义实体模型的 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 客户端代码生成器工具,但这似乎有点矫枉过正,我宁愿避免使用将来可能停止工作的工具。

我还看到了DataSvcUtil.exe 的 MSDN 文章,它可以转换 EDMX 文件,但我有一个 XML。我尝试更改文件扩展名,但它不会转换,它会引发错误:

错误 7001:“Scale”属性无效 - 根据其数据类型“ http://schemas.microsoft.com/ado/2007/05/edm:TScaleFacet ”,值“Variable”无效 - 字符串“Variable”为不是有效的整数值。
字符串“变量”不是有效的整数值。

我现在被卡住了,不确定哪种是推荐的方法。

4

1 回答 1

1

Microsoft 已声明他们会将 SDK 从 2011 端点转换为 WebAPI。我还没有听到任何关于这对早期绑定类型意味着什么的细节,但我猜他们会在那之前给出官方回应。(可能是CrmWebApiUtil.exe) 我相信CrmSrvUtil 最初是由第三方编写的,而微软只是获得了它的所有权。

于 2016-08-11T15:23:01.113 回答