我有一个 ASP.NET Web API 项目,我想在项目中使用 oData 过滤器和 ASP.NET oData 预览包。这意味着我需要IQueryable
用作响应类型。
不幸的是,消费者需要像这样包装的响应:
{
"total": 2,
"success": true,
"data": [
{ object1 },
{ object2 } ]
}
我创建了一个包装器对象,它将IQueryable
原始版本的响应分配给“data”属性,并设置“total”和“success”属性的值。这将创建消费者正在寻找的 JSON 响应。但它不再是 IQueryable,这意味着我无法实现 oData 过滤器。
我希望通过设置它的枚举器等来获取我的包装器对象并使其实现 IQueryable。但是,我认为这不会起作用,因为我必须分配 Provider 和 Expression 属性来实现接口,而我没有知道我应该放什么。我在 IoC 中使用存储库模式,EntityFramework Code First 数据访问位于一个单独的项目中,使用 Ninject 将具体对象分配给接口占位符。也许我可以从数据访问层一直抽象出接口,以便 Repository 对象携带对 IQueryProvider 的引用。您认为这是否可行,并允许它支持自动 oData 集成?