【问题标题】:odata class generation from edmx model从 edmx 模型生成 odata 类
【发布时间】:2018-08-29 22:51:08
【问题描述】:

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

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

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

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

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

我专门尝试使用 Microsoft Project Online 中的元数据。它给出了这样的端点: https://[domain]/sites/pwa/_api/ProjectData/$元数据

很遗憾,我无法直接连接到此,因为它需要身份验证,并且 odata 客户端代码生成器不支持身份验证...

【问题讨论】:

  • 你看过下面的msdn网页吗? docs.microsoft.com/en-us/visualstudio/data-tools/…
  • 我已经阅读了 edmx 文件,但由于某些原因,我无法打开 Visual Studio 中的文件,这对我来说并不完全清楚
  • 老实说,我的主要问题是如何让 odata 类生成工具与 edmx 文件一起使用,并且该链接没有说明这一点,并且 odata 类生成工具的文档非常有限,因为是大多数微软文档
  • 不能把文件复制到本地然后修改项目配置文件指向本地副本吗?
  • 这个特殊问题肯定是 Visual Studio 问题...更改 .NET 版本不会影响我是否有权访问 OData 客户端代码生成工具

标签: c# odata edmx


【解决方案1】:

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

编辑: 我已经确认客户端代码生成工具适用于 Visual Studio Community 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

【讨论】:

  • 我仍然无法使用 DataSvcUtil.exe 让它与我的 edmx 文件一起工作,它还会生成一个只有标题注释的 C# 类。这种酱汁还有什么秘密吗?
  • 您使用的端点是什么版本的 OData?您是否像我一样专门尝试使用 Microsoft Project Online 数据,或者您的 edmx 文件是否用于其他用途?我上面提到的答案只适用于 OData V1 - V3
  • 我还没有构建模型。因此,我决定使用 Restier 来托管我现有的 EF EMDX 文件中的服务。我有一些进展,但还没有。
  • @TheSharpNinja - 使用 Restier 并使用静态 EDMX 的结果如何?
  • 这是很久以前的事了。我几乎不记得发过这个了。
猜你喜欢
  • 2011-11-11
  • 2017-10-21
  • 2012-08-21
  • 1970-01-01
  • 2012-08-27
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多