[英]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
系統查詢選項中文字的格式:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.