C# 将SQL服务器表及其数据公开为oData

C# 将SQL服务器表及其数据公开为oData,c#,.net,sql-server,odata,C#,.net,Sql Server,Odata,是否有工具或框架将SQL Server表及其数据作为oData公开。考虑表是动态生成的,所以使用或映射实体框架不是一个选项。 我们需要一种机制将数据公开为OData,而不生成C类。这里有许多选项 从编码的角度来看,您可以构建一些通用的东西。Net(C#)围绕IQueryable接口和[EnableQuery]属性包装了OData支持。下面的伪代码演示了如何使用WebAPI2实现这一点。工作演示可以在几分钟内完成: [EnableQuery(PageSize = 100)] pub

是否有工具或框架将SQL Server表及其数据作为oData公开。考虑表是动态生成的,所以使用或映射实体框架不是一个选项。
我们需要一种机制将数据公开为OData,而不生成C类。

这里有许多选项

从编码的角度来看,您可以构建一些通用的东西。Net(C#)围绕
IQueryable
接口和
[EnableQuery]
属性包装了OData支持。下面的伪代码演示了如何使用WebAPI2实现这一点。工作演示可以在几分钟内完成:

    [EnableQuery(PageSize = 100)]
    public IQueryable Get()
    {
        var data = (IQueryable)<get any data from the DB as IQueryable>;
        return Okay(data, data.GetType());
    }
[启用查询(PageSize=100)]
公共IQueryable Get()
{
var数据=(IQueryable);
返回OK(data,data.GetType());
}
请记住,过滤etc最终可能会在内存中执行,因此尝试将尽可能多的过滤推回到数据库将提供更好的性能。我主要在强类型对象和实体框架中使用它,它将所有过滤推送到DB—非常强大而且非常快速。请记住,OData非常灵活,您需要针对常见用例优化数据库索引和查询

从数据库的角度来看,如果您在Azure中运行,只需点击几下OData。此外,Azure表存储的原始格式是OData。请注意,可能存在一些限制,例如,我认为SQLAzure的OData结果被分页到50行,以避免拒绝服务类型的场景对数据库造成冲击,尤其是对非索引数据的OData查询

如果您的SQL是本地的,我认为没有现成的,但是有很多供应商提供连接器。我和他们没有关系