Asp.net Web API数据库查询

时间:2015-02-03 07:48:08

标签: c# asp.net asp.net-web-api

我有一个Asp.net Web Api项目,它有CRUD方法。

但是,我有一个名为List的方法,它检索数据库中找到的项目列表。

我需要为用户提供灵活性,以便在实体之上应用custom sortscustom queries

到目前为止,我找到的最佳解决方案是使用OData

然而,OData比这复杂得多,我认为它创造了额外的复杂性,不需要(创建/更新/删除工作就像现在一样好。)

我的问题是:

  1. 我可以在我的OData项目中实现类似于Asp.net Web Api的内容,它允许我从数据库中查询数据吗?

  2. 如果不是,我可以仅为我的控制器中的一个方法(OData)实施List吗?

1 个答案:

答案 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:

https://www.nuget.org/packages/Microsoft.AspNet.OData/