问题标签 [asp.net-web-api-odata]

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 投票
0 回答
218 浏览

json - 使用 ODataModelBuilder 时启用LowerCamelCase

使用ODataConventionModelBuilder.

但是使用的时候是怎么做的ODataModelBuilder呢?我似乎找不到有关该主题的任何内容。

我怀疑它必须按属性完成,有点像这样builder...Property(x => x.Foo)...,但找不到任何相关的方法。

0 投票
3 回答
5054 浏览

c# - PageSize 和 MaxTop 的区别

[EnableQuery(PageSize=20)]和有什么区别[EnableQuery(MaxTop=20)]

据我所知,他们都对结果设置了最大限制。

调用GET odata/Products?$top=100他们中的任何一个都只会给我 20 个结果。

0 投票
2 回答
1337 浏览

c# - 在 ODATA $metadata 上设置命名空间

我想更改我的 ODATA 服务公开的所有实体的命名空间。

现在他们有:Core.DomainModel.Entities.Database消费时有点长。

我试图通过设置它,builder.Namespace = "MyModel";但没有效果。

然后我想我必须像这样在每个实体上设置它

但是当我必须通过每一个实体时,这很快就会失控:(

然后我尝试了这个

但这也不包括所有内容。我注意到 ENUMs、ComplexTypes 和一些实体没有得到正确的命名空间......:/

所以我的问题是。如何为每个实体设置命名空间?

0 投票
1 回答
1157 浏览

asp.net-web-api - APN.NET WebAPI OData 控制器 - 发布参数绑定

当 json 数据包含的属性多于 OData 控制器中定义的 Post 方法所需的属性时,我对 OData 控制器的发布请求有问题。MVC 控制器应该允许所谓的过度发布,但似乎 OData 控制器不接受它。请查看以下示例。

我有一个简单的实体类:

  • SkillAffiliation 是一个枚举。

还有一个简单的 OData 控制器,带有 Post 方法,如下所示:

问题是我使用了第三方 Web 控件集合,并且应该使用我的 OData 控制器的控件添加了一个额外的 json 属性,基本上 POST 请求如下所示:

{"Name":"TEST2","ApplicableTo":"Vehicle","ApplicableTo_input":"Vehicle"}

所以有一个额外的 ApplicableTo_input 属性——不幸的是,这会导致模型验证错误。ModelState.IsValid 属性设置为 false,并且出现错误消息“类型 'Mango.Models.Skill' 上不存在属性 'ApplicableTo_input'。确保仅使用类型定义的属性名称。” 添加这个额外的属性显然是他们解决方案中的一个错误,并将在下一个版本中修复,但是在那之前我必须找到一些解决方法。

我已经尝试将 [Bind(Exclude="ApplicableTo_input")] 属性添加到我的发布操作参数中,但它似乎不起作用。有任何想法吗?

0 投票
3 回答
2648 浏览

.net - 为什么本地主机上的客户端和服务器之间存在时差

应用程序正在本地主机上运行。服务器比客户端早一小时!

客户端发送时间:Sat Apr 25 2015 00:00:00 GMT-0400 (Eastern Daylight Time)

在此处输入图像描述

发送请求: dateOfArrival: "2015-04-25T04:00:00.000Z"

在此处输入图像描述

服务器接收时间:{4/24/2015 11:00:00 PM}

在此处输入图像描述

为什么会有一小时的时差,我该如何处理?我猜想这与日光时间与标准时间有关。

当我尝试这段代码时:

实际上我只对一天的一部分时间感兴趣。在我的数据库中,我将其保存为日期类型。但是因为这个时差,我的日子提前了一天。

我尝试了各种方法来处理问题,但我完全迷失在日期时间转换世界中!即使我迷失在本地主机应用程序上,我也无法想象实时服务器上会发生什么。

我认为这个问答也提到了类似的问题,但我不知道它是否重要:

我的时区:东部时区 (UTC-05:00)

关于 web api odata json 序列化程序,从这篇文章中我可以说它不是这个

这是我的服务器代码:

客户端是 angularjs 发送 http 补丁请求

0 投票
0 回答
425 浏览

c# - 使用 Fluent Api 设置 OData 导航属性

给定一个使用OData 4的Web Api 2.2项目,我正在使用来自第三个共享程序集的实体,我想专门为 api 配置一些实体。

例如:其中一个共享实体SharedEntityA包含一个字段BinaryValue我不想成为navigablesortablefilterable等。

问题是我无法更改共享程序集,因此我无法为其使用属性,例如:

是否可以使用Fluent Api在我的 api 项目中进行配置?

我正在 App_Start/WebApiConfig.cs 中寻找类似的东西:

该示例引发编译错误

PrimitivePropertyConfiguration 不包含 IsNotSortable 的定义

0 投票
1 回答
4435 浏览

c# - 如何在自托管 Web API 应用程序中配置 OData 端点

我正在构建一个 OWIN 自托管 Web API 2 服务。我需要此服务公开 OData 端点。

传统的 IIS 托管方法涉及 App_Start/WebApiConfig.cs:

但是,在我的自托管解决方案中,没有 WebApiConfig.cs 这样的东西

我可以在哪里以及如何指定此 OData 配置?

0 投票
1 回答
141 浏览

c# - WebApi OData 属性路由内容协商

我正在尝试模仿 NuGet.org 的行为,它为示例 URL 返回包 ID,例如:

http://www.nuget.org/api/v2/Packages(Id='Nuget.Core',Version='2.8.3')/Id

此响应如下所示:

我可以使用PropertyRoutingConvention创建一个类似的 WebApi OData 路由并在我的控制器上创建一个方法:

调用此操作,但响应始终具有 application/json 的 Content-Type:

除了内容协商不起作用之外,如何在响应中包含属性名称以使其行为类似于 NuGet.org 的行为?

为了清楚起见,完整的代码可在https://github.com/themotleyfool/NuGet.Lucene

0 投票
2 回答
20526 浏览

c# - 将 Distinct 应用于 OData 查询

我想从我的 OData 端点获取不同值的列表。但尚不支持 distinct 或 group by。

我的 URI 查询看起来像这样

我的控制器

没有工作:(

0 投票
2 回答
28275 浏览

asp.net-web-api - 如何只获取没有价值的 Odata.Count

有什么方法可以在没有任何值数组的情况下仅获取响应有效负载中的数据计数?

我将 ODataV4.0 与 Webapi 2.2 一起使用。目前,当我查询以下内容时,它会返回所有值和计数: http://odata/People?$count=true

我只需要类似"@odata.count":1, "value":[]或没有的东西"value"

是为这项工作发挥作用的唯一方法吗?