OData实体属性序列化名称不同于C#变量名称

时间:2015-11-12 02:08:25

标签: c# asp.net asp.net-web-api odata

在使用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 ...

似乎注释被忽略了,是否有其他方法可以执行此操作或修复我的代码以使注释有效?

0 个答案:

没有答案