问题标签 [odata-v4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
12381 浏览

c# - Web APi OData V4 问题“实体''没有定义键

当我运行以下示例时,它会引发以下异常...

附加信息:实体“TestEntity”没有定义键。

我已经使用代码优先实体上下文配置了密钥... modelBuilder.Entity<TestEntity>().HasKey(t => t.EntityID);

问题是什么?为什么 OData V4 不使用配置的密钥?

0 投票
2 回答
796 浏览

c# - odata v4 使用 2 个参数

我只想将 2 个参数传递给控制器​​并运行我的 sql 函数尝试并在没有运气的情况下搜索了很多资源,

谁能给我一些提示?

基本上我遵循这个Web API 和 OData-传递多个参数

当我使用builder.Function编译器时,请告诉我没有找到扩展方法。

包配置

我的 WebApiConfog.cs

0 投票
1 回答
205 浏览

asp.net-web-api2 - Microsoft OData Client 6.x with OData service 4.x handle NULL return (404 Not Found) on the client

I can't seem to figure out how to handle NULL (404 Not Found) on the client when calling an OData function for a given Entity.

Ex> calling service like "Context.Objects.ByKey(1).SomeFunction().GetValue()"
I want to get "NULL" from the service but instead on the client it throws a 404 Not Found exception.

If I alter the service to return "NULL" then I will receive a serialization exception on the server and if I tell the server to return "OK(null)" I will also get a serialization exception.

Here is the server code for the controller

And here is the WebApiConfig code

I can't seem to find the "proper" way of handling null values from the odata service when using Microsoft OData client.

Maybe I can wire into the client "ReceivingResponse" event to handle the 404 Not Found some how? Any suggestions...

0 投票
2 回答
1069 浏览

c# - Asp.Net Web API ODATA 的 GROUP BY / 不区分大小写扩展?

在 ODATA V4 文档中无法通过引用找到组。当我们在 URL 中传递 group by 查询时,它只返回键,而不是实际的分组结果。

在 ODATA Web API 的扩展点上使用 Asp.Net ODATA 中的 Group by 的任何参考。我们需要全面掌握如何解析 ODATA 查询并将其转换为 LILNQ 到实体查询。

我说的是拦截 ODATA 查询和执行手动自定义,例如 LINQ to Entities

我正在尝试为区分大小写实现类似的扩展。 Web API中的OData大小写敏感过滤?

0 投票
1 回答
1424 浏览

c# - OData-v4 - 对实体集合进行操作,然后执行功能

在我的 ODATA-v4 控制器中,我有以下代码:

在 CurrentTestResultController.cs 中,我看似简单:

本质上,对于CurrentTestResult集合中的所有实体,它返回集合中TestResultTypeId出现的不同。(这是一个微不足道的操作,但我简化了一个更复杂的真实生活场景)

这很容易做到 - 但我似乎无法首先CurrentTestResult过滤它应该操作的集合。

此请求,默认情况下对所有 CurrentTestResult 实体进行操作

localhost/app/odatareport/CurrentTestResult/Default.Breakdown

返回

(正确的结果,有 5 种不同的类型)

然而,这个试图简单地先过滤掉它的请求失败了

localhost/app/odatareport/CurrentTestResult/Default.Breakdown?$top=2

返回

据我了解 ODATA 管道,为什么失败是有道理的。控制器方法将返回一个 IQueryable,然后将应用 ODATA $filter、$top 等。

我想要一个函数来对已经被过滤掉的集合进行操作。

我想要做的甚至可能吗?

我知道 Breakdown 方法本身有 .GetAll() ,但必须有一种方法可以在方法之前应用过滤 -

否则,这一切都是毫无意义的......

0 投票
1 回答
1948 浏览

c# - ODATA v4 批处理 - 如何在服务器上将请求作为批处理处理?

使用 ODATA v4 批处理 - 如何在服务器上将批处理请求作为批处理处理?

我有一个客户端成功创建了一个 1000 的 POST 请求,并将其作为批处理创建到我的 webapi 端点。我的端点正在运行 C# 和实体框架。

问题是我的端点中的控制器单独处理每个条目,并在批处理请求中为每个创建进行一次数据库旅行。

因此,虽然它是一个 POST,但一旦在服务器上,它们不会作为一个批次处理。

有没有办法将批处理请求作为批处理?

0 投票
0 回答
411 浏览

asp.net-web-api2 - 带有 protobuf 的 OData

我想将 Web API 2 / OData 与protobuf一起使用。
有几篇关于如何让 Web API 服务使用协议缓冲区的文章,但我似乎找不到任何关于如何让 OData 客户端库在客户端上反序列化的文章。
https://www.infoworld.com/article/2982579/application-architecture/working-with-protocol-buffers-in-web-api.html
https://damienbod.com/2014/01/11/using-protobuf -net-media-formatter-with-web-api-2/

我很确定我需要在 OData SendingRequest / ReceivingResponse 事件中做一些事情,但我似乎找不到任何关于如何实现这一点的文章。

0 投票
1 回答
1894 浏览

c# - 对 Apply with Aggregate OData Version 4 的结果执行 OrderBy

考虑我有一个像这样的 odata 查询:

会话和应用程序实体由 ApplicationId 链接。我想在“Total”上应用 orderby 并获得前 5 个结果作为 odata 查询响应。

我尝试&$top=5在上述查询的末尾添加。它说:

URI 中指定的查询无效。在“会话”类型上找不到名为“总计”的属性。

谁能告诉我是否支持这样的查询?

0 投票
1 回答
880 浏览

c# - 带有“and”运算符的 OData 过滤器在 Web Api 中不起作用

我正在创建一个带有单个 GET 操作的 Web Api,它处理以下获取请求。

GET https://localhost:44378/v1/RoutePrefix/Route ?$filter=Id eq '1234'$select=Name (这个工作正常)

GET https://localhost:44378/v1/RoutePrefix/Route ?$filter=Id eq '1234' 或 MessageType eq '1' (这工作正常)

GET https://localhost:44378/v1/RoutePrefix/Route ?$filter=Id eq '1234' and MessageType eq '1' (这个不起作用。响应值总是[])

看起来带有“and”运算符的过滤器不起作用。“或”运算符对我来说很好用。

我的 webapiconfig.cs 中有以下代码。

在我的控制器中,根据过滤器参数的数量,我调用不同的方法。并且这两种方法都返回 List 作为对 GET 方法的响应。在 Main get 方法中,我返回 Ok(List.AsQueryable())。

我用 [EnableQuery] 属性装饰了控制器并实现了 ODataController,如下所示:

[EnableQuery] 公共类 RouteController : ODataController

Get 方法如下所示:

请让我知道做错了什么。

谢谢

0 投票
0 回答
427 浏览

odata - OData V4 属性路由未使用正确的操作

我在 OData V4 中遇到属性路由问题。我有一个简单的客户模型类和一个控制器,它有 2 个 Get 方法。但是,每当我尝试获取特定的 Customer like/Customers(7)时,它​​总是使用第二个 Get 方法来获取所有客户,但从不使用 id 参数闯入该方法。我在这里想念什么?谢谢!

控制器:

WebApiConfig: