首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$expand在IQueryable外

$expand在IQueryable外
EN

Stack Overflow用户
提问于 2016-04-19 14:50:01
回答 1查看 563关注 0票数 0

我似乎有一个不寻常的需求,我需要能够$expand对象,但我不能使用标准IQUeryable。

我使用EntityFramework和AutoMapper从数据库实体到API数据对象进行项目,然后通过OData公开这些数据对象。这有一个问题,那就是它限制了我所能做的事情--只限于那些AutoMapper可以ProjectTo的元素。

如果Api对象中的项是数据库的一部分,这通常不是问题。现在我有了一些对象,在这些对象中,我必须(有时是可选的)添加来自其他来源的数据。我们通常只讨论存储在内存中的数据(比如对象的错误细节,其中包括堆栈跟踪或一些运行时统计信息)。

因此,我需要找到一种方法来操作(筛选)查询,更重要的是--在单个实体GET操作中处理$expand (虽然对multi的支持也是受欢迎的,但在那里我可能可以使用ODataQueryDetails来处理这个问题)。

但是,对于单个项查询,我有一个如下形式的控制器方法:

Get (FromODataUri Guid密钥){

这使我根本无法访问ODataQueryDetails。在这种情况下,有人知道如何获取这些查询细节吗?

总的来说,"customize“元素的文档并不特别大--通常假定某人”只是在玩一些IQueryable接口“--而没有考虑到您可能需要进行多级处理,或者在内存和数据库数据中进行混合操作。

注意:Web :如何在单个实体上使用$expand?不是重复的--这是一个参数名称(键作为名称所需的)的单一问题,而且不够深入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-21 03:06:44

如果您简单地向Get添加一个参数,如下所示,Web参数绑定将为该方法提供一个值。让Thing是控制器处理的实体类型。

代码语言:javascript
复制
public IHttpActionResult Get([FromODataUri] Guid key, ODataQueryOptions<Thing> opts)

请注意,您需要指定ODataQueryOptions的泛型版本,否则会得到异常。

这将为您提供一个表示当前请求的查询选项的对象,但您将无法修改这些选项(所有有趣的属性都没有公共设置程序)。似乎有很多开发人员要求能够拦截和修改查询选项,但目前还没有现成的解决方案。请参阅当前针对5.1.0版本的关于Github的公开发行。有关在控制器方法中修改查询选项的当前最佳实践,请参见OData V4在服务器端修改$filter

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36721930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档