簡體   English   中英

指定枚舉的 ODATA 過濾器的格式

[英]Format of an ODATA filter specifying an enum

我構建了一個包含枚舉屬性Level的 EdmModel。

var level = new EdmEnumType("Log.Api.Models",
                            "Level",
                            EdmPrimitiveTypeKind.Int32,
                            false);
level.AddMember(new EdmEnumMember(level, "Debug", new EdmIntegerConstant(0)));
level.AddMember(new EdmEnumMember(level, "Error", new EdmIntegerConstant(1)));
level.AddMember(new EdmEnumMember(level, "Info", new EdmIntegerConstant(2)));
Model.AddElement(level);

// add a property, named 'Level', of type 'Level'
logEntry.AddProperty(new EdmStructuralProperty(logEntry,
                                               "Level",
                                               new EdmEnumTypeReference(level, false)));

然后使用 C# 在 C# 中解析 OData 請求

ODataUriParser.ParseFilter(filter,
                           Model,
                           (IEdmSchemaType) schemaElmnt);

但到目前為止,我未能成功發送指定枚舉值的請求。 我試過完全合格的枚舉......

"Level eq Log.Api.Models.Level.Error"

而沒有

"Level eq Error"

我試過用單引號括起來

"Level eq 'Error'"

異常消息是

檢測到具有不兼容類型的二元運算符。 找到運算符種類“等於”的操作數類型“Log.Api.Models.Level”和“Edm.String”。

正確的格式是什么? 還是問題出在我的 EdmModel 上?

正確的格式很奇怪而且不直觀,但它看起來像這樣:

Fully.Qualified.Enum.Type'EnumValue'

在您的示例中使用:

Level eq Log.Api.Models.Level'Error'

V4 官方文檔描述了$filter系統查詢選項中文字的格式:

http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-url-conventions-complete。 html#_Toc371341809

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM