加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – OData V4 WebAPI按Enum的Int值过滤?

发布时间:2020-12-16 00:18:29 所属栏目:asp.Net 来源:网络整理
导读:OData V4具有枚举支持,但似乎您只能通过命名空间进行搜索.现在如何通过值而不是文本表示来搜索? 在odata的V3中,您可以查询$filter = Status eq 35,其中35在枚举中是完整的.即使该字段是数据模型中的枚举字段,此方法也可以使用. 现在,此方法在V4中失败,而不
OData V4具有枚举支持,但似乎您只能通过命名空间进行搜索.现在如何通过值而不是文本表示来搜索?

在odata的V3中,您可以查询$filter = Status eq 35,其中35在枚举中是完整的.即使该字段是数据模型中的枚举字段,此方法也可以使用.

现在,此方法在V4中失败,而不是要求命名空间具有枚举的文本表示.

我希望V3支持再次运行,而不必失去odata V4的其他功能.通过int值搜索枚举项看起来比搜索文本更可靠.较旧的odata客户端(例如kendo)不支持按字节枚举过滤方法.

解决方法

要在OData v4中执行此操作,我们可以在初始webapi配置中启用EnumPrefixFree,因此我们不必将完整的枚举命名空间编写为前缀:
public static void Register(HttpConfiguration config)
{
    // ...
    config.EnableEnumPrefixFree(enumPrefixFree: true);
    config.MapODataServiceRoute("odata","odata",YourEdmModem);
    // ...
}

然后,我们可以按String或Int值过滤任何枚举:

$filter=Status eq 'single'

要么

$filter=Status eq 1

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读