如何公开数据库中的数据以供查询?

How to expose data from database to be queryable?

我需要围绕几个数据库 table 设计一个包装器,允许客户端简单地执行 GET:

http://myservice/accounts?$filter=name eq alex

然后此服务将针对数据库 table 应用该查询,例如:

create table account (name varchar, key int)

我们会有一些控制器可以获取该查询字符串并将其应用于数据集,使用伪代码:

public class AccountsController
{
   public HttpResponseMessage Get()
   {
        return _dataSource.Get(Request.ODataQueryString);
    }
}

我们如何公开 sql 服务器 table 以便通过 odata 轻松查询?

假设您正在使用 EntityFramework,您只需要将您的控制器注册为 OData 端点,用 OData [EnableQuery] 属性和 return 的实例装饰它您通过控制器方法定位的 class:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint