- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新
投票here on User Voice解决歧义。
<小时/>我编写了一个继承于 ODataController
的 OData WebAPI Controller 。 .
public class ManyColumnsController : ODataController
{
[Queryable(
AllowedOrderByProperties = "Aa,Bb,Cc,Dd",
EnsureStableOrdering = false,
MaxOrderByNodeCount = 2)]
public IQueryable<ManyColumn> GetManyColumns(
ODataQueryOptions<ManyColumn> options)
{
// Because I've disabled EnsureStableOrdering,
// I need to check column "Dd" is always included
// in the OrderBy option. This will ensure stable ordering.
if (!options.OrderBy.RawValue.Contains("Dd")
{
var entityType = options.Context.ElementType as IEdmEntityType;
var ddProperty = entityType.DeclaredStructuralProperties()
.Single(p => p.Name == "Dd");
options.OrderBy.OrderByNodes.Add(new OrderByPropertyNode(
ddProperty,
OrderByDirection.Descending));
}
return this.context.ManyColumns;
}
}
此代码运行并产生额外的 OrderByNode
添加到 OrderBy
ODataQueryOptions
的属性(property)传递到方法中。
问题
此更改对 Controller 生成的语句没有影响。处理继续进行,就好像我没有更改任何内容和任何 OrderBy
应用于 ManyColumns
实体的内容将替换为原始请求的 $orderby
参数中指定的原始 OrderBy
。
经过进一步检查,似乎 ODataQueryOptions
可能是不可变的。它的大多数属性只有 get
访问器。
问题
我是否刚刚滥用了 OrderByQueryOption
实现中的失败?
有没有办法修改ODataQueryOptions
稍后将在管道中应用于请求?
最佳答案
您应该删除 [Queryable] 属性。
根据http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options#ODataQueryOptions ,您应该使用 Queryable 或手动操作 ODataQueryOptions。 Web API 从 URI 查询字符串填充 ODataQueryOptions,之后您可以(大概)更改这些选项。
在页面的更下方,他们实现了一些看起来非常接近您问题的解决方案的东西。他们实现了一个自定义的 MyQueryable 属性,该属性强制执行自定义排序验证器。您可能无法在验证期间更改查询,但您可以覆盖属性的 ApplyQuery 实现以注入(inject)所需的 order-by 子句。
关于c# - 我可以更改用于 ODataController 请求的 ODataQueryOptions 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23512076/
我有一个可用的(简化的)ODataController,方法如下。 public class MyTypeController : ODataController { [HttpGet] [E
在尝试进行一些测试驱动开发时,我创建了最基本的可构建方法: public class NoteService : INoteService { public IEnumerable GetNo
我有一个常规 Controller ,它具有 odata 功能: [Route("[controller]")] public class ChannelsController : Controlle
我是为 WebAPI 编写测试用例的新手。我曾经看到过类似的问题,但没有得到回答,但我想知道如果我的 API 有 ODataQueryOptions,我将如何测试它们。作为参数的一部分。见下文: pu
我正在尝试通过 EF Core 和 OData(7.1.0) 实现对 Sql Server 的查询。 操作方法如下: [HttpGet] public IEnumerable Get(ODataQue
我需要能够从 ODataQueryOptions 进行转换至 RestRequest为了能够发出带有指定过滤器的 RestRequest,并创建了以下辅助类: public static class
我正在实现一个 Web API 接口(interface)来支持一些相当复杂的查询来运行它,并且遇到了最大请求 URI 长度的问题。 我的 Web API 方法的定义如下所示(使用 Automappe
更新 投票here on User Voice解决歧义。 我编写了一个继承于 ODataController 的 OData WebAPI Controller 。 . public class Ma
最近我们决定使用包 Microsoft.AspNetCore.OData为我们的服务解决方案。这些服务具有 ODataQueryOptions 参数,并使用它来过滤它们提供的数据。为了对此进行单元测试
我有一个 Web API 项目,在没有 OData 支持的情况下使用了很多年,只有标准的 URL 参数。 我现在希望向该 API 添加 OData 支持,但由于该 API 不是基于可查询模型构建的,因
我正在构建一个 OData v.4 Web 服务,该服务必须公开从另一个第 3 方 Web 源检索的数据,因此数据与 LINQ 世界中的任何内容都不相似,即:没有 IQueryable,没有上下文,没
我正在构建一个 OData v.4 Web 服务,该服务必须公开从另一个第 3 方 Web 源检索的数据,因此数据与 LINQ 世界中的任何内容都不相似,即:没有 IQueryable,没有上下文,没
有 2 个类,Foo 和 Bar。在 Foo 对象中嵌套了一个 Bar 对象。 public class Foo { public Guid FooId { get; set; } p
问题开始here ,我无法调用 $select或 $expand在 results . 给定: var results = options.ApplyTo(_uow.Repos
我们将 Microsoft ASP.NET MVC OData WebAPI 用于我们的 Web 服务。由于围绕层次结构 ID 的一些数据架构问题(超出本次对话的范围),我们的一些 GET 操作必须使
我在 OData v4 中使用 ApiController(不是 ODataController),其中有一个将 ODataQueryOptions 作为参数的 Get 操作,如下所示: public
我尝试了使用 Breeze 和 API Controller 、使用过滤器(部分使用自定义对象,另一部分使用 ODataQueryOptions)加载项目列表的不同方法,但结果证明它们都不是真正成功的
我想重建我的上一个项目。过去,我没有使用任何 Web API。我可以使用 ODataQueryOptions 来执行 $filter、$orderby 、$top 、$skip 操作吗对于我自己的 h
我正在将我们现有的 API 迁移到 .net 5,我面临单元测试迁移的问题。我想保留测试和测试 Controller ,但我找不到处理 ODataQueryOptions 的方法,因为此类已更改,我再
我正在将我们现有的 API 迁移到 .net 5,我面临单元测试迁移的问题。我想保留测试和测试 Controller ,但我找不到处理 ODataQueryOptions 的方法,因为此类已更改,我再
我是一名优秀的程序员,十分优秀!