【问题标题】:Expose the SQL Sever tables and its data as oData将 SQL Server 表及其数据公开为 oData
【发布时间】:2017-01-13 14:59:33
【问题描述】:

是否有工具或框架可以将 SQL Server 表及其数据公开为 oData。考虑到表是动态生成的,因此不能使用 OR Mapper Entity Framework。

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

【问题讨论】:

    标签: c# .net sql-server odata


    【解决方案1】:

    这里有很多选项。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 2010-10-27
      • 1970-01-01
      • 2021-09-04
      相关资源
      最近更新 更多