将参数传递给返回集合的 OData (GET) 方法

2023-12-03

我在用OData v3。如何将参数传递给OData控制器并返回一个集合?我正在尝试做的示例:

[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)]
public IQueryable<ServiceInfoResult> Get([FromODataUri] int instanceId)
{
    //etc
}

当我测试这个时,我收到此错误:

No HTTP resource was found that matches the request URI 'http://localhost:30863/odata/ServiceInfoResultApi(1)'.
No action was found on the controller 'ServiceInfoResultApi' that matches the request.

我知道O数据操作,但在这种情况下它们不是一个可行的选择,因为我需要得到odata.count在响应中返回,但无论我做什么,在使用时都无法返回该属性O数据操作(即使在尝试此处建议的内容时:Web API OData Inlinecount 不起作用和这里:Webapi odata 通过实体框架功能进行扩展)。因此,我唯一的选择似乎是创建一个新的 OData API 控制器ServiceInfoResult实体,这样我就可以避免 OData 操作。但是,正如您在上面所看到的,将参数传递给返回集合的方法似乎会导致其他错误。

有什么解决办法吗?不,我无法更新到 OData v4,因为这会带来一系列其他问题(这将花费比我更多的时间,而且它不支持 DateTime)

UPDATE

感谢@Fan Ouyang,我找到了原因odata.countJSON 负载中缺少的是我没有返回实体类型。如果ServiceInfoResult是我数据库中的一个实体,odata.count会被退回。就因为这个而没有被退回有点愚蠢,但事实就是这样。我想知道是否有任何解决方法。例如,我可以下载源代码,更改 1 行代码并使用它吗?否则,也许我是时候开始研究 OData v4 了。我的项目相当大,所以在我时间有限的情况下,这不是一个好主意。所以,如果有任何替代方案,我想听听。谢谢!


尝试这个示例,CheckoutMany 方法接受参数并返回一个集合https://github.com/OData/ODataSamples/tree/master/WebApi/v3/ODataActionsSample

在CheckOutMany操作方法中添加[EnableQuery]属性,并在requset url中添加$inlinecount查询选项,您可以在payload中看到odata.count

顺便说一句,V4 现在支持日期时间:http://odata.github.io/WebApi/#04-01-datetime-support

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将参数传递给返回集合的 OData (GET) 方法 的相关文章

随机推荐

  • 将行与数据帧 pandas 中的下一行合并

    我在 pandas 中有一个包含多列的数据框 我想将每一行与下一行合并 例子 输入数据框 A B C a1 a2 a3 b1 b2 b3 c1 c1 c3 d1 d2 d3 输出数据帧 A1 B1 C1 A2 B2 C2 a1 a2 a3
  • 如何使用 Dart HttpClient 发出 DELETE 请求?

    如果您使用的是 DartHttpClient 它提供了一个HttpClientRequest 从一台服务器向另一台服务器发出请求 据我所知 唯一可用的 HTTP 方法是GET and POST 分别对应于post postUrl and g
  • 为什么 rspec 不运行? Rspec 在启动后就挂起

    今天我跑不动了rspec在过去的一年里我每天都会测试很多次的项目 它打印前几行启动行 弃用警告等 然后挂起 几分钟过去了 没有任何额外的输出 Ctrl C 成功地用正常方式杀死了它 RSpec is shutting down and wi
  • RegisterPowerSettingsNotification C# pinvoke

    我正在尝试检测笔记本电脑盖子何时打开和关闭 应该非常简单 我似乎可以正确注册该事件 但是当我关闭笔记本电脑窗口时 我没有收到通知 这是 DLL 导入 DLL代码 http www pinvoke net default aspx user3
  • 如何使用 fastcgi 和 perlbrew 为在 nginx 上运行的 Perl Catalyst 应用程序创建初始化脚本

    我正在寻找一个 initscript 以便在运行 nginx 作为 Perl Catalyst 应用程序代理的网络服务器上使用 perlbrew 我目前正在尝试通过以下方式启动应用程序 source PERLBREW execute per
  • this:不能在静态上下文中使用 this

    你能帮我用下面的代码吗 错误是 无法在静态上下文中使用此 public class Sample2 param args public static void main String args Sample2 sam new Sample2
  • 将 boost numpy 与 Visual Studio 2019 和 python 3.8 结合使用

    我想将 Boost Numpy Boost 版本 1 72 与 Visual Studio 2017 和 Python 3 8 结合使用 在我的测试程序中 我收到链接错误 boost numpy38 vc141 mt gd x32 1 72
  • 如何通过代码打开窗口的系统菜单?

    我有一个 C WinForms 无边框窗口 我重写 WndProc 并处理 WM NCHITTEST 消息 对于这种形式的区域 我的命中测试函数返回 HTSYSMENU 双击该区域成功关闭窗体 但右键单击它不会显示窗口的系统菜单 在任务栏中
  • Core Data SUBQUERY 和 NSFetchedResultsController 的键路径错误

    如果这是重复的 我们深表歉意 20 分钟的搜索没有找到确切的情况或解决方案 我有一个包含三个类的核心数据堆栈XClass YClass and ZClass XClass与 具有一对多关系YClass YClass与 具有一对多关系ZCla
  • 为什么此 toDataURL 行是安全错误?

    如果将来自另一个站点的图像加载到页面 然后将其作为合成中的部分成分写入画布 请使用 context drawImage image 0 0 w h 似乎任何不安全的事情都已经在画布上发生了 那为什么会 window location can
  • 长按NavigationView只能作用于左侧部分,不能作用于所有NavigationLink?

    下面是一个NavigationView 视图弹出到Destination2当长按 NavigationLink 并Destination1正常点击时 但图中NavigationLink的右侧区域无法长按 有谁知道原因吗 谢谢 import
  • WIX:继续安装之前应关闭以下应用程序

    我的应用程序有托盘图标 当我卸载它时 我有一个窗口 其中建议关闭 my tray app exe 带有文本 在继续安装之前应关闭以下应用程序 我使用wix CloseApplication Element Util Extension 来关
  • 如何使用 javafx-maven-plugin 运行包含 jfoenix 的 Maven java fx 项目

    我试图创建编译我的应用程序并创建一个可执行文件 目前我认为最好使用的工具是 javafx maven plugin 我无法让它工作 所以我从根据此创建项目时生成的基本代码开始 https www youtube com watch v 4v
  • Google Gmail SMTP 设置不允许我使用 PHPMailer 发送电子邮件

    我在 Gmail 上创建了一个帐户 因为前一个帐户也给我带来了同样的问题 以便我的应用程序可以使用 google smtp 服务器发送电子邮件 我正在使用 PHPMailer 库并要求它显示任何日志错误 我总是收到类似的消息 它略有不同 有
  • Android 中的 RTSP 客户端

    可能有人问过同样的问题 但我没有找到任何适合我的解决方案 我正在尝试在 android 中播放 RTSP 流 服务器是 Darwin 流服务器 目前我尝试了VideoView和MediaPlayer 当我使用3G时 这两个都工作正常 但有时
  • 确定 PHP 调用函数的位置

    你们知道我如何从哪个文件中确定该函数内部调用的函数吗 我正在考虑使用 debug backtrace 但这看起来并不是一种优雅的方式 而且他们还在另一个问题中列举了其他原因here 那么还有什么其他选择呢 多谢 我前段时间从某个地方借用了这
  • 在 Angular2 路由中使用 Resolve

    在 Angular 1 中我的配置如下所示 routeProvider when news templateUrl newsView html controller newsController resolve message functi
  • Umbraco 7 更新 Umbraco 路线

    我正在尝试创建一个 Umbraco 7 MVC 应用程序 在此过程中 我希望能够创建在幕后管理数据的自定义控制器 通过我的研究 我发现使用 SurfaceController 是最成功的 但是 该路线将 umbraco surface 添加
  • 如何在 apache 服务器上运行 socket.io(仅限客户端)

    我想在我的 apache 服务器上运行 socket io 的客户端 我已将 socket io 目录上传到我的网络服务器 并尝试了主站点的简单客户端连接示例套接字 io但它不起作用 我不知道需要什么才能让它工作并连接我正在运行的服务器 我
  • 将参数传递给返回集合的 OData (GET) 方法

    我在用OData v3 如何将参数传递给OData控制器并返回一个集合 我正在尝试做的示例 EnableQuery AllowedQueryOptions AllowedQueryOptions All public IQueryable