如何像 SQL 连接一样使用 OData Expand?

2023-12-19

我试图弄清楚如何完成相当于:

select *
from Users u
inner join Comments c on c.UserId = u.Id
where Id = 1569

(表别名以获得更好的 SQL 可读性)

...在 StackOverflow OData 端点上。这个 url 将如何构造?我正在查看文档Expand http://www.odata.org/developers/protocols/uri-conventions#ExpandSystemQueryOption在 OData.org 上,我本以为它看起来像这样:

https://odata.sqlazurelabs.com/OData.svc/v0.1/rp1uiewita/StackOverflow/Users?$Expand=Comments&$filter=UserId eq 1569但这是不对的。

在 Linq 中,应该是这样的(我认为),但不支持 Join:

Users.Where(u=>u.Id==1569).Join(Comments, u=>u.Id, c=>c.UserId, (a,b)=>a.Id==b.UserId)

我不需要严格地在 Linq 中解决这个问题,我只是想弄清楚如何构造查询 url。基本上,如何将 SQL 连接谓词转换为 OData url 并在一次调用中完成此操作?


正确的方法是这样的:

http://odata.stackexchange.com/stackoverflow/atom/Users(1569)?$expand=Comments

问题是数据源中似乎没有用户(不知道为什么),因此上面的查询将返回 404。但这是正确的语法。

这个想法是,如果您只需要有关一个用户的信息,您可以使用/Users(1569)(括号中的内容是实体集的主键)。然后,如果您还想包含所有评论,只需添加$expand=Comments。如果您只想要评论而不想要有关用户的信息,您可以这样做/Users(1569)/Comments.

请注意,您使用的服务没有定义导航属性,因此上述内容将不起作用,因为实际上不支持“连接”。但 stackexchange odata 端点确实定义了导航属性。

基本上,连接是在服务器/服务上定义的,以便客户端不必知道哪列是哪个主键的外键。

它还有助于不使用关系数据库作为存储的数据源,因为它不会强迫它们创建假外键。

您可以进一步向下展开图表的“层”。如果展开中返回的实体还定义了更多导航属性,则您可以指定以逗号分隔的导航属性列表。

这是一个虚构服务的示例,请注意,这是扩展集合中的每个客户,这类似于多重联接。

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

如何像 SQL 连接一样使用 OData Expand? 的相关文章

  • 从java运行sqlplus脚本的简单方法

    我有包含 sqlplus 特定脚本的 sql 文件 它包括 或 作为语句终止符 执行存储过程的 EXEC 等 我需要从 java jdbc 执行此脚本 而不需要 sqlplus sql ant任务 maven sql插件无法处理不同的终止符
  • 什么是动态 SQL 查询?何时需要使用动态 SQL 查询?

    什么是动态 SQL 查询 何时需要使用动态 SQL 查询 我正在使用 SQL Server 2005 这里有几篇文章 动态SQL简介 http www sqlteam com article introduction to dynamic
  • 从 SQL 数据库获取日期时间

    我的数据库表中有一个 DateTime 记录 我编写一个查询从数据库中获取它 string command2 select Last Modified from Company Data where Company Name Descrip
  • 从 Presto 中的 JSON 列获取特定值

    我有一个带有 JSON 列的表points其中一行为 0 0 2 1 1 2 2 0 5 15 1 2 20 0 7 我想获取键的值 1 and 20 并将它们存储为别名 例如first and second在查询中 到目前为止我所做的是
  • SQL Server 2008 中的全文搜索一步一步

    如何开始使用SQL Server 2008 中的全文搜索 阅读这些链接 SQL SERVER 2008 创建全文目录和全文搜索 http blog sqlauthority com 2008 09 05 sql server creatin
  • PL/SQL 过程:如何返回 select 语句?

    我想创建一个存储过程 on ORACLE数据库服务器我的问题是 我不知道如何返回 select 语句 这是程序中应包含的逻辑 输入参数 过滤器1 int 过滤器2 字符串 with cte as select val1 val2 stdde
  • 如何在“order by”中添加条件?

    我有一个带有输入参数的存储过程 现在根据这个参数 我的 order by 语句将发生变化 如果输入参数是 ID int类型列 则按ID排序 如果是 ProductType 则按产品类型排序 如果是 IssueDate 则应按问题日期排序 现
  • SQL Server - SQL 替换整个数据库中所有表中的所有列

    这是一个很遥远的事情 我猜这个问题没有简单的答案 但是 我继承了一个数据库 其中填充了一些可怕的数据 许多包含描述的行都有回车符 这意味着当我们 BCP 输出数据时 它会带有回车符 我的问题 有没有办法在 MS SQL Server 中对整
  • 更高效的 LINQ 查询

    有人可以帮我将此查询循环变成高效的 Linq 查询吗 我将其加载到 TreeView 中 因此必须附加每个项目 包含也非常低效 延迟加载项目也不起作用 事实上 这个查询访问数据库的次数比应有的要多 public IQueryable
  • 将数据表传递到存储过程。有没有更好的办法?

    数据表可以以某种方式传递到 SQL Server 2005 或 2008 中吗 我知道标准方法似乎是将 XML 传递给 SP 并且可以通过某种方式轻松地将数据表转换为 XML 来实现这一点 将 NET 对象传递到 SP 怎么样 那可能吗 我
  • 从一张表更新并插入另一张表

    我有两张桌子 table1 ID 代码 姓名 table2 ID 代码 姓名 具有相同的列 我想将数据从 table1 插入到 table2 或更新列 如果 table2 中存在 table1 ID table2 ID 执行此操作的简单方法
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • LEFT JOIN 比 INNER JOIN 快得多

    我有一张桌子 MainTable 有超过 600 000 条记录 它通过第二个表连接到自身 JoinTable 在父 子类型关系中 SELECT Child ID Parent ID FROM MainTable AS Child JOIN
  • 如何重置 SQL Server 中表的 IDENTITY 列? [复制]

    这个问题在这里已经有答案了 我怎样才能重置我的IDENTITY我已经填充的表中的列 我尝试过类似的方法 但它不起作用 WITH TBL AS SELECT ROW NUMBER OVER ORDER BY profile id AS RN
  • 在 Oracle 中如何将多行组合成逗号分隔的列表? [复制]

    这个问题在这里已经有答案了 我有一个简单的查询 select from countries 结果如下 country name Albania Andorra Antigua 我想在一行中返回结果 如下所示 Albania Andorra
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p
  • 这个 SQL 语句在 Linq 中的等价物是什么?

    我需要将此 SQL 语句移植到 LINQ SELECT f ID as IdFlight Tarif 1 as Tarif f Time f TimeOfArrival sl Name as FromLoc sl Country as Fr
  • T-SQL 平均值四舍五入到最接近的整数

    我不确定以前是否有人问过这个问题 但是如何在 T SQL 中将平均值四舍五入到最接近的整数 这应该可以做到 根据您要寻找的平均值 您可能需要在末尾使用 GROUP BY SELECT CONVERT int ROUND AVG Column
  • 仅使用 SQL 进行 Base 36 到 Base 10 的转换

    出现了一种情况 我需要在 SQL 语句的上下文中执行以 36 为基数到以 10 为基数的转换 Oracle 9 或 Oracle 10 中似乎没有内置任何内容来解决此类问题 我的 Google Fu 和 AskTom 建议创建一个 pl s
  • 用户表到用户和用户首选项。这是正常化了吗?

    我有一张桌子叫Users其偏好列表不断增加 这些首选项可以包括 ReligionId 它将连接到另一个包含宗教列表的表 偏好列表正在不断增加 我想把它分开Users表分成2个表 我认为行之有效的策略是制作一个单独的表 名为UserPrefe

随机推荐

  • Java 8:比较不同类型列表的更有效方法?

    在单元测试中 我想验证两个列表是否包含相同的元素 要测试的列表是由以下列表构建的Person对象 其中一个类型字段String被提取 另一个列表包含String文字 人们经常会发现以下代码片段来完成此任务 请参阅这个答案 https sta
  • 有一些基本 R 解析器的代码吗?

    我正在寻找用于解析 R 代码的 Bison Flex 实现 以便我可以在 C 程序中使用它来实现使用 R 表达式的编程语言 我在谷歌上找不到任何可用的东西 除了这个 https github com halpo parser https g
  • Task.Delay 超过 int.MaxValue 毫秒

    最大持续时间aTask Delay可以告诉延迟的是int MaxValue毫秒 创建一个最干净的方法是什么Task哪个会延迟到那个时间之后 Fine await Task Delay TimeSpan FromMilliseconds in
  • Ruby:转义 unicode 字符串

    统一码字符串 string CEO Frye u2013 response to Capitalism discussion in Davos Vote aggressively with your wallet against firms
  • Maven:指向多个 jar 的系统依赖项

    是否可以在 pom 中定义一个依赖项 使其具有系统范围但指向多个 jar 我确信这很不正统 但是 我只是想知道这是否可能 所以像这样
  • Java封装概念不清楚

    这是基本问题 但我仍然不理解封装概念 我不明白我们如何更改其他类的类属性 因为每当 我们尝试设置类的公共实例值 我们必须创建该类的对象 然后设置值 每个对象引用不同的内存 所以即使我们改变 这不会影响任何其他对象的实例值 即使我尝试使用静态
  • 有没有办法通过添加带有情感的元素来增加特异性?

    我们有一个样式化的组件 当它编译时 它会添加一个类名 如下所示 div class app a class css hash link a div 这一切都很好 除了有人声明了类似于以下内容的 CSS 的情况 app a color red
  • bash getopts 具有多个强制选项

    是否可以使用 getopts 一起处理多个选项 例如 myscript iR 或 myscript irv 另外 我遇 到的情况是 基于条件脚本需要强制选项 例如 如果脚本的参数是一个目录 我将需要指定 R 或 r 选项以及任何其他选项 m
  • 如何在 Android 版 Genymotion 模拟器中拨打来电?

    我如何拨打电话根尼运动 https www genymotion com 安卓模拟器 我正在使用 Genymotion 模拟器来运行和测试我的应用程序 在本机模拟器DDMS中 我们可以进行假调用 这可以使用 Genymotion 模拟器来完
  • 为用户定义的枚举重写 std::to_string 是为用户定义的枚举提供 to_string 的正确方法吗?

    C 没有办法获取枚举的字符串表示形式 人们通过编写包含大量样板代码的自定义函数来解决这个问题 switch with case XYZ return XYZ 当然 这需要枚举的用户知道自定义函数的名称 所以我想我可以添加一个专业std to
  • 指令测试中的 $apply 与 $digest

    如果我有一个指令响应范围内特定属性的状态 并且我想在测试中更改该属性并验证它是否正确响应 那么执行该更改的最佳方法是什么 我见过这两种模式 scope apply function scope myAttribute true and sc
  • 使用 sed 更改文件中行的位置

    我想知道如何更改文件中行的位置 最好使用 sed 例如 考虑包含 goal identifier statement let statement 1 let statement 2 forall statement other statem
  • Swift 5 中的异或?

    我正在尝试在 Swift 5 中执行 XOR 操作 文档似乎没有明确提到使用两个布尔值进行此操作 https docs swift org swift book LanguageGuide AdvancedOperators html ht
  • DateTimeFormatter 在格式化后添加至今的年份[重复]

    这个问题在这里已经有答案了 我正在尝试转换日期格式2019 12 30到有格式的日期30 12 2019为此我想使用DateTimeFormatter我有以下代码 LocalDate date LocalDate parse 2019 12
  • Summernote 中的转义 HTML

    我正在使用名为 Summernote 的所见即所得 wysiwyg 我将其值发送到服务器 并在服务器上使用 HTML Purifier 对其进行净化 之后我将其保存到数据库 mysql 然后 我需要在所见即所得中显示纯化的 html 因此将
  • strtol() 返回错误值

    我这里有一个奇怪的 当我传入以下字符串时 strtol atol 和 atoi 都会返回错误的值 long test strtol 3087663490 p 10 根据我的调试器 它返回 2147483647 我完全被难住了 有什么建议吗
  • Rstudio loadNamespace(name) 中的 Rstudio knit pdf:没有名为“rmarkdown”的包

    我刚刚更新到 Rstudio 版本 0 98 1074 当我尝试使用带有脚本的编译笔记本或带有 rmd 的 Knit pdf 时 我得到 loadNamespace 错误错误 没有名为 rmarkdown 的包 但我可以打字rmarkdow
  • Outlook MailItem:如何区分邮件是传入还是传出?

    我正在用 C 编写 VSTO Outlook 插件 我需要区分给定的 MailItem 是传入还是传出 或者两者都不是 例如当它是草稿时 有什么万无一失的方法可以做到这一点吗 我现在拥有的最佳解决方案是获取收件人 抄送和密送的列表 从活动帐
  • 由正方形网格组成的多边形

    我正在寻找一种算法来查找围绕连续的没有孔的正方形网格的多边形 如下所示 我已经让每个网格方块存储有关它们组成的周围区域的边缘类型的数据 即顶部 右上角 顶部底部 无边缘等 所以我认为这数据可以被算法利用 如果有人可以为这种算法提供一些伪代码
  • 如何像 SQL 连接一样使用 OData Expand?

    我试图弄清楚如何完成相当于 select from Users u inner join Comments c on c UserId u Id where Id 1569 表别名以获得更好的 SQL 可读性 在 StackOverflow