我有一个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>
输出文件。
我尝试从.cs
和edmx:
元素中删除<Edmx>
名称空间前缀,使该名称空间成为默认名称,并调整其余元素的前缀,但这并不是工作要么:
<DataServices>
答案 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服务生成客户端代码的问题。