【发布时间】:2017-01-06 17:11:02
【问题描述】:
我目前有一个使用我们编写的 OData 版本的 C# WebAPI。我们想开始使用 Microsoft 的 OData4,它可以比我们的自定义实现做得更多。
创建一个扩展 ODataController 的控制器 我可以创建一个控制器,它会根据查询字符串自动进行查询。 (如下图)
问题是当我希望它返回包含附加数据的Result 对象时,它会返回查询结果。当我将返回类型设置为 Result 时,它将不再应用查询字符串。
如何使用自动可查询实现并仍然返回我自己的对象?我尝试创建一个返回正确对象的公共方法并调用返回可查询对象的私有方法,但它没有正确过滤可查询对象。
我是在正确的轨道上,还是有其他选择?
public class CallController : ODataController
{
[EnableQuery]
public IQueryable<Call> GetCall()
{
var list = new List<Call>
{
new Call
{
Id = 4
},
new Call
{
Id = 9
},
new Call
{
Id = 1
}
};
return list.AsQueryable();
}
}
public class Call
{
public int Id { get; set; }
}
public class Result
{
public Call[] Calls { get; set; }
public string NewToken { get; set; }
public string Warning { get; set; }
}
【问题讨论】:
标签: c# asp.net-web-api asp.net-web-api2 odata odata4j