WebApi OData $ select和Getters and Setters

时间:2015-08-11 21:55:31

标签: c# asp.net-web-api entity-framework-6 odata asp.net-web-api2

我在我的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查询的字符串?

1 个答案:

答案 0 :(得分:1)

不,OData查询实际上变成了LinqToEntity和查询DB来获取数据,如果这些属性映射到DB,更改模型中的get方法无法帮助,如果解码结果不是动态的,则可以创建一个新的模型并返回,如果它是动态的,可以在OData中使用Open type功能,将解码结果放入字典然后返回。

然后你的$ select应该有效。