是否有工具或框架来公开SQL Server表及其作为oData的数据。考虑表是动态生成的,因此使用OR Mapper Entity Framework不是一种选择。
我们需要一种机制来将数据公开为OData而不生成C#类。
答案 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。我与他们没有任何关系。