WCF数据服务和动态数据结构

时间:2013-04-24 15:26:18

标签: wcf-data-services dynamic-data

也许我的问题毫无意义,但我会尝试揭露我的问题:我想通过WCF数据服务公开自定义数据(基于反射提供者)。

此数据是复杂请求的结果,其结构可能非常多变。我无法通过我通过Dataservice公开的4或5个自定义类来对其进行建模。

例如,我可以得到[日期,姓名,年龄,功能]或[日期,时间,页面,类型],[国家,点击,roi]等结果。我不可能在自定义类中生成所有结果组合,并通过WCF数据服务公开它们。

那么,是否可以公开结构变化很大的数据?当我看到Azure Table可以做什么时,我认为这是可能的,但我无法弄清楚它是如何工作的。

2 个答案:

答案 0 :(得分:0)

在OData中,您可以使用开放类型执行此操作。通过将$metadata属性设置为OpenType,将实体类型声明为在服务的true文档中打开:

<EntityType Name="Customer" OpenType="true">
...
</EntityType>

这意味着该实体类型的实例可以动态地添加任意数量的未声明属性(除了该类型上的任何声明属性)。

但是,WCF数据服务反射提供程序不支持开箱即用的打开类型。为了将开放类型与WCF数据服务一起使用,您需要实现自定义提供程序(即,提供IDataServiceQueryProviderIDataServiceMetadataProvider的实现)。有关编写自定义提供程序的帮助,我建议使用Alex的博客系列here

答案 1 :(得分:0)

我已经阅读了Alex的博客系列,但他没有使用开放类型属性。相反,他揭露了一个无类型的/ RO&amp; RW技术,但我认为它不适合我的问题...