【问题标题】:Transformation error when running OData v4 Client Code Generator运行 OData v4 客户端代码生成器时出现转换错误
【发布时间】:2015-05-08 19:07:13
【问题描述】:

我有一个从 /$metadata 端点返回以下内容的 OData 服务:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
  <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0">
    <Schema Namespace="(...)" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
      <!-- ... -->
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>

当我尝试对此 XML 文件运行 OData v4 Client Code Generator (v2.3.0) 时,我收到以下错误:

警告:正在运行转换:元素“edmx:Edmx”对于根元素来说是意外的。根元素应该是 Edmx。

警告:“http://schemas.microsoft.com/ado/2007/08/dataservices/metadata:DataServiceVersion”属性未声明。

我也只看到了一个空的.cs 输出文件。

我尝试从 &lt;Edmx&gt;&lt;DataServices&gt; 元素中删除 edmx: 命名空间前缀,将该命名空间设为默认值,并调整其余元素的前缀,但这也不起作用:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Edmx Version="1.0" xmlns="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:edm="http://schemas.microsoft.com/ado/2008/09/edm">
  <DataServices m:DataServiceVersion="1.0">
    <edm:Schema Namespace="(...)">
      <!-- ... -->
    </edm:Schema>
  </DataServices>
</Edmx>

【问题讨论】:

    标签: c# odata


    【解决方案1】:

    好的,看起来问题可能出在服务公开的 OData 版本上,即 OData v1.0。正在定义的 edm 命名空间是 http://schemas.microsoft.com/ado/2006/04/edm。见OData Version 4.0 Part 3: Common Schema Definition Language (CSDL), §2.2

    定义由 OData 服务公开的实体模型的元素和属性使用实体数据模型命名空间进行限定:

    CSDL 的早期版本使用以下 EDM 命名空间:

    使用 Visual Studio 2013 中的 添加服务引用 工具(可选安装 this update)解决了为此 OData 服务生成客户端代码的问题。

    【讨论】:

    • Visual Studio 2017(可能还有 2015)不再支持“添加服务引用”路由:The specified OData API cannot be added because OData APIs are now only supported with the OData Client Code Generation Tool. For more information, please see: https://aka.ms/odatavsclientguidance
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多