OData请求中的错误请求异常

时间:2014-10-22 08:24:09

标签: c# linq odata

执行此代码段

期间
var res = ctx.Resources.Where(
            t => t.ResourceId == "T/15")
            .First();

程序抛出错误请求 - 查询语法错误异常。

问题是字符串中的'/'字符。

重要的是要注意ResourceId是一个字符串,是Resources实体的“关键”。

特殊字符在我们的系统中是必需的。

1 个答案:

答案 0 :(得分:0)

由于必须在OData请求中转义/之类的特殊字符,因此会发生此错误。在.Net Framework中,您可以将Uri.EscapeDataString Method用于此目的,例如:

var encResourceId = Uri.EscapeDataString("T/15");
var res = ctx.Resources.Where(
            t => t.ResourceId == encResourceId)
            .First();

假设指定的查询将转换为以下OData请求:

http://localhost/odata/Resources()?$filter=ResourceId eq 'T%2F15'