如何使用 ODATA 查询两个实体之间是否存在关系?

发布于 2024-10-29 12:40:37 字数 418 浏览 4 评论 0原文

有没有办法编写 ODATA 查询(即使用 ODATA URL)来测试两个实体实例之间是否存在关系?

想象一下,我的 ODATA 服务中有两种实体类型:人员和项目。想象一下,我已经定义了它们之间的多对多关系(类似于“人拥有项目”)。我有一个人和一个项目的主键 (ID),并且想知道该人是否拥有该项目。

我可以弄清楚,给定一个人,如何获取该人拥有的所有项目,但这在一般情况下会返回比我想要的更多的数据(并且在其他类似场景中会出现性能问题)。我可以以某种方式查询关系本身吗?

我的服务器在 ASP.NET 上使用 WCF 和 Entity Framework 4.0。我的客户端是在浏览器中运行的 HTML 和 jquery。

如果无法编写关系查询,是否有类似的最佳实践来使用自定义方法扩展 ODATA 服务来测试它?

谢谢!

大卫

Is there a way to write an ODATA query (i.e., using an ODATA URL) that tests for the existance of a relationship between two entity instances?

Imagine I have two entity types in an ODATA service: Person and Project. Imagine I've defined a many-to-many relationhip between them (something like Person owns Project). I have the primary key (ID) of each of a Person and a Project and want to know if the Person owns the Project.

I can figure out, given a Person, how to get all the Projects owned by that person but this will, in the general case, return way more data than I want (and have perf problems in other similar scenarios). Can I query for the relationship itself somehow?

My server is using WCF and Entity Framework 4.0 on ASP.NET. My client is HTML and jquery running in a browser.

If there's no way to write the relationship query, is there a best practice for something like this to extend the ODATA service with a custom method to test this?

Thanks!

David

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寻找一个思念的角度 2024-11-05 12:40:37

我认为您可以简单地调用以下内容:ODataService.svc/Persons(1)/Projects(5)。这将尝试返回 Id=5 的 Project 与 Id=2 的 Person 相关,因为在本例中 Persons 是实体集,并且 ProjectsPerson 实体上的导航属性。如果关系存在,您将获得记录。如果它不存在,您将得到类似找不到资源的信息。

I think you can simply call something like: ODataService.svc/Persons(1)/Projects(5). This will try to return Project with Id=5 related to Person with Id=2 because Persons in this case is the entity set and Projects is the navigation property on the Person entity. If the relation exists you will get the record. If it doesn't exists you will get something like Resource not found.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文