首页 > 解决方案 > 从 edmx 模型生成 odata 类

问题描述

我正在尝试在另一个 ODATA API 的代码中处理来自现有 ODATA 端点的数据。

我不想手动重新创建所有模型,因此我希望使用现有的 edmx 模型在 C# 中创建我需要的类。

我查看了 Microsoft 提供的“odata 客户端代码生成器”,这似乎是一个完美的解决方案,但如果我直接连接到服务端点,我只能让它工作......如果我下载 edmx,它就不起作用文件并尝试使用它(即使教程说您可以使用 URL 或文件)。

有没有人能够成功地将这个 odata 客户端代码生成器连接到 edmx 文件?

如果我不能让它工作,是否有人对如何从这些 edmx 模型生成我需要的类有其他建议?

我特别尝试使用 Microsoft Project Online 中的元数据。它提供了这样的端点: https://[domain]/sites/pwa/_api/ProjectData/ $metadata

不幸的是,我无法直接连接到这个,因为它需要身份验证并且 odata 客户端代码生成器不支持身份验证......

标签: c#odataedmx

解决方案


odata 客户端代码生成工具似乎不支持 VS 2017。我现在正在尝试 VS 2015。

编辑:我已经确认客户端代码生成工具适用于 Visual Studio 社区 2015。我无法让它工作,因为我在 Visual Studio Professional 2017 下运行它......微软员工在几个论坛上报告了这个VS 2017 不支持该工具。

此外,我发现此服务仍然无法与 OData 客户端代码生成器一起使用,因为它是 OData V3,并且该工具仅适用于 OData V4。您必须使用 DataSvcUtil.exe 从早期版本的 OData 生成代码。我下载了 .edmx 文件并运行以下命令来生成类:

"%windir%\Microsoft.NET\Framework\v3.5\DataSvcUtil.exe" /dataservicecollection /version:2.0 /language:CSharp /out:TestOutput.cs /in:C:\Users\[username]\DevelLocal\test1.edmx

推荐阅读