我在我的WebApi2项目中使用OData,我正在查询一个模型,它的值作为编码的HTML字符串存储在数据库中 -
public class Document : BaseEntity
{
private string _subject;
public string Subject
{
get { return HttpUtility.HtmlDecode(_subject); }
set { _subject = value; }
}
}
当我使用带有$ select操作的OData查询此实体时,OData直接读取该行,并且它不会通过EF文档映射器,因为值未经过解码。反正有没有某种中间件拦截读取并解码这些OData查询的字符串?
答案 0 :(得分:1)
不,OData查询实际上变成了LinqToEntity和查询DB来获取数据,如果这些属性映射到DB,更改模型中的get方法无法帮助,如果解码结果不是动态的,则可以创建一个新的模型并返回,如果它是动态的,可以在OData中使用Open type功能,将解码结果放入字典然后返回。
然后你的$ select应该有效。