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
希望这可以帮助.
原文地址:https://www.jb51.cc/aspnet/251945.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。