执行此代码段
期间var res = ctx.Resources.Where(
t => t.ResourceId == "T/15")
.First();
程序抛出错误请求 - 查询语法错误异常。
问题是字符串中的'/'字符。
重要的是要注意ResourceId是一个字符串,是Resources实体的“关键”。
特殊字符在我们的系统中是必需的。
答案 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'