我正在进行一项运动,我似乎有思想家阻止。
我想创建和公开可以应用于任何二维单表的ODATA服务(仅查询),并允许使用者查询该表,而不需要程序事先知道有关表的模式的任何信息。
理想情况下,我想使用WCF数据服务。
考虑它的一种方法 - ODATA服务指向一个文件位置,其中可能存在随机(但有效)的CSV文件,当指向该文件时,消费者应该能够查询和使用用于过滤,排序,分组等的ODATA语言
没有联接。这是一张单人桌。
另一种思考方式是它是一个完全未知的直到运行时的DataTable。 (注意不一个DataSet。只需一个DataTable。)
据推测,主键是构造的行号,因为没有任何东西可以保证任何其他列的唯一性。
这看起来应该很容易,但每当我尝试新策略时,我似乎都碰壁了。
有什么想法吗?
答案 0 :(得分:1)
在此用例中使用WCF数据服务可以轻松地为预先存在的实体模型创建静态定义的ODATA端点,这与常规WCF服务公开您定义为生产者的特定服务接口的方式非常相似。为了清楚起见,这是在编译时定义的模式,而不是在运行时定义。
如果你想做更多的事情,你可能需要编写自己的自定义提供程序,这样做的各种方法将为你提供逐步更强大的功能,但代价是执行起来更加棘手。一个很好的起点是Alex James的优秀博客系列,从这里开始:
http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx
要明确的是,实施自定义提供程序非常棘手,根据您的需要可能不值得。
实现这一目标的一种方法是实现一种公开某种元模型,键/值对,三重存储等的数据服务,但这有点破坏了使用ODATA获得强类型的好处,我也不会特别推荐这种方法。
答案 1 :(得分:1)
对于它的价值,WebAPI 2.0 OData现在支持无类型实体,请参阅此博文:http://blogs.msdn.com/b/leohu/archive/2013/11/05/typeless-entity-object-support-in-webapi.aspx