1

我正在从事一项似乎有思想家阻止的练习。

我想创建并公开一个 ODATA 服务(仅限查询)​​,该服务可以应用于任何二维单表,并允许消费者查询该表,而无需程序事先知道有关表架构的任何信息。

理想情况下,我想使用 WCF 数据服务。

一种思考方式——ODATA 服务指向可能存在随机(但有效)CSV 文件的文件位置,当指向该文件时,消费者应该能够查询和使用 ODATA 语言过滤、排序、分组等。

没有连接。这是一个单表。

另一种思考方式是,它是一个完全未知的运行时数据表。(注意不是DataSet。只是一个 DataTable。)

大概主键是一个构造列的行号,因为没有什么可以保证任何其他列的唯一性。

这看起来应该很容易,但每次我尝试新策略时,我似乎都会遇到一堵墙。

有什么想法吗?

4

2 回答 2

1

将 WCF 数据服务用于此用例将轻松地为预先存在的实体模型创建静态定义的 ODATA 端点,这与常规 WCF 服务公开您定义为生产者的特定服务接口的方式非常相似。需要明确的是,这是在编译时定义的模式,而不是在运行时。

如果您想做更多的事情,您可能需要编写自己的自定义提供程序,这样做的各种方法将逐步为您提供更强大的功能,但代价是实现起来越来越棘手。一个很好的起点是 Alex James 的优秀博客系列,从这里开始:

http://blogs.msdn.com/b/alexj/archive/2010/01/07/data-service-providers-getting-started.aspx

需要明确的是,实现自定义提供程序非常棘手,并且根据您的需要可能不值得付出努力。

解决此问题的一种方法是实现一个数据服务,该服务公开某种元模型、键/值对、三重存储等,但这在某种程度上破坏了您从使用 ODATA 获得的强类型的好处,所以我不会t 特别推荐这种方法。

于 2013-07-30T13:32:01.447 回答
1

对于它的价值,WebAPI 2.0 OData 现在支持无类型实体,请参阅此博客文章:http: //blogs.msdn.com/b/leohu/archive/2013/11/05/typeless-entity-object-support-在-webapi.aspx

于 2013-11-26T15:38:47.943 回答