运行OData v4客户端代码生成器时的转换错误

时间:2015-05-08 19:07:13

标签: c# odata

我有一个OData服务,它从true端点返回以下内容:

/$metadata

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

  

警告:正在运行转换:根元素的元素'edmx:Edmx'是意外的。根元素应该是Edmx。

     

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

我也只看到一个空的<?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> 输出文件。

我尝试从.csedmx:元素中删除<Edmx>名称空间前缀,使该名称空间成为默认名称,并调整其余元素的前缀,但这并不是工作要么:

<DataServices>

1 个答案:

答案 0 :(得分:2)

好的,看起来问题可能是该服务正在暴露的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服务公开的实体模型的元素和属性使用Entity Data Model命名空间进行限定:

           

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

     

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