在使用OData的ASP .NET Web API中,我有一个C#对象描述了允许在$ filter中使用的字段
说我想将$filter
支持限制为仅$filter=deviceId gt 'someValue'
(遵循http://www.ben-morris.com/parsing-odata-queries-decoupled-data-entities-webapi/方法......)。
所以我定义了一个这样的类:
[DataContract]
public class DeviceODataQuery
{
[DataMember(Name = "deviceId")]
public string DeviceId { get; set; }
}
然后我自己构建了OData上下文,因为我无法使用IQueryable
(太长时间无法解释原因,它的遗留代码......)。
看起来像这样:
/* Configure supported fields for query */
var builder = new ODataConventionModelBuilder();
builder.EntitySet<DeviceODataQuery>("DeviceODataQuery");
builder.Namespace = typeof(DeviceODataQuery).Namespace;
var model = builder.GetEdmModel();
ODataQueryContext = new ODataQueryContext(model, typeof(DeviceODataQuery));
/* Configure supported OData parameters for validation */
ODataValidationSettings.AllowedFunctions = AllowedFunctions.None;
ODataValidationSettings.AllowedLogicalOperators = AllowedLogicalOperators.GreaterThan;
ODataValidationSettings.AllowedArithmeticOperators = AllowedArithmeticOperators.None;
ODataValidationSettings.AllowedQueryOptions = AllowedQueryOptions.Top | AllowedQueryOptions.Filter;
长话短说,我现在可以在我的请求中使用$filter=DeviceId gt 'someValue'
,但它拒绝使用注释中的名称,我不能使用deviceId
...
似乎注释被忽略了,是否有其他方法可以执行此操作或修复我的代码以使注释有效?