【问题标题】:.NET client (Service Reference) does not work with ASP.NET OData Web API.NET 客户端(服务参考)不适用于 ASP.NET OData Web API
【发布时间】:2014-06-15 22:26:51
【问题描述】:

我有一个公开 OData 的 ASP.NET Web API 项目(请注意,我没有使用实体框架,而是从自定义源返回数据)。我希望能够在客户端利用 .NET LINQ 查询支持,但似乎在客户端添加服务引用需要以“application/atom+xml”格式返回数据,而默认为 ASP.NET web api Odata返回 application/json 或 application/xml。

有没有一种简单的方法可以使用 asp.net web api odata 服务在客户端编写 linq 样式的 odata 查询? 如果不是,那么将我的服务从 asp.net 转换为 WCF 是我唯一的选择吗?

【问题讨论】:

    标签: c# asp.net-mvc linq rest odata


    【解决方案1】:

    您可以使用 OData 客户端代码生成器通过传递 OData 服务元数据来自动生成 Odata 客户端代码。然后您可以使用 Linq 从客户端进行查询。可以参考以下博客。 The ASP.NET Web API 2.2 for OData release and the OData Client Code Generator release

    Linq 代码如下: var q1 = TestClientContext.CreateQuery<Type>("Accounts").Where(acct => acct.ID == 101);

    【讨论】:

    • 我收到以下错误:“正在运行转换:System.InvalidOperationException:元素 'edmx:Edmx' 对于根元素来说是意外的。根元素应该是 Edmx。”以下是我在服务返回的元数据中看到的内容: schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 我不确定如何升级我的服务器使用 Odata 版本 4。我使用带有 Odata 和 Rest 协议的 ASP.NET Web API。
    • 你可以尝试添加服务参考,这是为V3:Click Here
    • 玛雅是对的。默认情况下,VS 中的 Scafolding 创建 Web.API Odata 服务 v3。您可以在服务元数据输出 (localhost:xxxxx/odata/$metadata) 中找到类似“”的内容。客户端代码生成器仅适用于 OData V4 服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2011-09-10
    • 2012-06-23
    相关资源
    最近更新 更多