也许我的问题没有意义,但我会尝试暴露我的问题:我想通过WCF数据服务暴露自定义数据(基于反射提供程序)。
该数据是复杂请求的结果,其结构可能非常多变。我不能通过通过Dataservice公开的4或5个自定义类来建模它。
例如,我可以有像[日期,姓名,年龄,功能]或[日期,时间,页面,类型],[国家,点击量,roi]等结果。我不可能在自定义类中生成结果的所有组合,并通过WCF Data Service公开它们。
那么,是否有可能公开具有非常可变结构的数据呢?当我看到Azure Table的功能时,我认为这是可能的,但我不知道它是如何工作的。
通常在OData中,您可以使用开放类型完成此操作。通过将OpenType
属性设置为true
,在服务的$metadata
文档中声明实体类型为open,如下所示:
<EntityType Name="Customer" OpenType="true">
...
</EntityType>
这意味着该实体类型的实例可以动态地添加任意数量的未声明的属性(除了该类型上已声明的属性之外)。
但是,WCF Data Services反射提供程序不提供开箱即用的开放类型支持。为了在WCF Data Services中使用开放类型,您需要实现一个自定义提供程序(即,提供IDataServiceQueryProvider
和IDataServiceMetadataProvider
的实现)。关于编写自定义提供程序的帮助,我推荐Alex的博客系列。
我读过Alex的博客系列,但是他没有使用open types属性。相反,他暴露了一个未类型化的/RO &RW技术,但我认为它不适合我的问题…