我有一个Asp.net Web Api
项目,它有CRUD方法。
但是,我有一个名为List
的方法,它检索数据库中找到的项目列表。
我需要为用户提供灵活性,以便在实体之上应用custom sorts
或custom queries
。
到目前为止,我找到的最佳解决方案是使用OData
。
然而,OData
比这复杂得多,我认为它创造了额外的复杂性,不需要(创建/更新/删除工作就像现在一样好。)
我的问题是:
我可以在我的OData
项目中实现类似于Asp.net Web Api
的内容,它允许我从数据库中查询数据吗?
如果不是,我可以仅为我的控制器中的一个方法(OData
)实施List
吗?
答案 0 :(得分:2)
OData是.NET平台上的一个很好的选择。当然还有其他选择,但OData应该足够好用于你的用例。如果你不需要OData的所有功能,你也可以按照类似的原则自己实现查询,所有OData都是一个协议,而且微软在.NET中有它自己的实现。
是您可以全局启用OData查询,也可以在Web API
控制器中启用单个操作。
以下是ASP.NET网站的摘录:
EnableQuerySupport方法为任何返回IQueryable类型的控制器操作全局启用查询选项。如果您不希望为整个应用程序启用查询选项,则可以通过将[Queryable]属性添加到操作方法来为特定控制器操作启用它们。
以下是启用查询的示例Web API控制器:
public class ProductsController : ApiController
{
[EnableQuery]
IQueryable<Product> Get() {}
}
您可以使用以下URL在上面的控制器上调用客户端驱动的分页:
http://localhost/Products?$top=10&$skip=20
此处提供更多信息:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options
在上面的示例中,我使用EnableQuery
属性而不是Queryable
,因为后者已过时。
您可以使用以下NuGet包安装OData: