将SQL Sever表及其数据公开为oData

时间:2016-09-06 08:28:24

标签: c# .net sql-server odata

是否有工具或框架来公开SQL Server表及其作为oData的数据。考虑表是动态生成的,因此使用OR Mapper Entity Framework不是一种选择。

我们需要一种机制来将数据公开为OData而不生成C#类。

1 个答案:

答案 0 :(得分:0)

这里有很多选择。

从编码角度来看,您可以构建通用的东西。 .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());
    }

请记住,过滤等最终可能会在内存中执行,因此尝试将尽可能多的过滤回送到数据库将提供更好的性能。我主要使用强类型对象,实体框架将所有过滤推送到数据库 - 非常强大,非常快。请记住,OData非常灵活,您需要针对常见用例优化数据库索引和查询。

从数据库的角度来看,如果您在Azure中运行,只需点击几下即可获得OData。 See this article.进一步的Azure表存储的原始格式是OData。请注意,可能存在限制,例如,我认为SQL Azure的OData结果被分页到50行,以避免拒绝破坏数据库的服务类型方案,尤其是对非索引数据的OData查询。

如果您的SQL是内部部署,我认为没有任何开箱即用的东西,但有许多供应商提供连接器。 Here is an example from a quick Google。我与他们没有任何关系。