【发布时间】:2017-01-13 14:59:33
【问题描述】:
是否有工具或框架可以将 SQL Server 表及其数据公开为 oData。考虑到表是动态生成的,因此不能使用 OR Mapper Entity Framework。
我们需要一种机制来将数据公开为 OData 而无需生成 C# 类。
【问题讨论】:
标签: c# .net sql-server odata
是否有工具或框架可以将 SQL Server 表及其数据公开为 oData。考虑到表是动态生成的,因此不能使用 OR Mapper Entity Framework。
我们需要一种机制来将数据公开为 OData 而无需生成 C# 类。
【问题讨论】:
标签: c# .net sql-server odata
这里有很多选项。
从编码的角度来看,您可以构建一些通用的东西。 .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。我与他们没有任何关系。
【讨论】: