也许我的问题毫无意义,但我会尝试揭露我的问题:我想通过WCF数据服务公开自定义数据(基于反射提供者)。
此数据是复杂请求的结果,其结构可能非常多变。我无法通过我通过Dataservice公开的4或5个自定义类来对其进行建模。
例如,我可以得到[日期,姓名,年龄,功能]或[日期,时间,页面,类型],[国家,点击,roi]等结果。我不可能在自定义类中生成所有结果组合,并通过WCF数据服务公开它们。
那么,是否可以公开结构变化很大的数据?当我看到Azure Table可以做什么时,我认为这是可能的,但我无法弄清楚它是如何工作的。
答案 0 :(得分:0)
在OData中,您可以使用开放类型执行此操作。通过将$metadata
属性设置为OpenType
,将实体类型声明为在服务的true
文档中打开:
<EntityType Name="Customer" OpenType="true">
...
</EntityType>
这意味着该实体类型的实例可以动态地添加任意数量的未声明属性(除了该类型上的任何声明属性)。
但是,WCF数据服务反射提供程序不支持开箱即用的打开类型。为了将开放类型与WCF数据服务一起使用,您需要实现自定义提供程序(即,提供IDataServiceQueryProvider
和IDataServiceMetadataProvider
的实现)。有关编写自定义提供程序的帮助,我建议使用Alex的博客系列here。
答案 1 :(得分:0)
我已经阅读了Alex的博客系列,但他没有使用开放类型属性。相反,他揭露了一个无类型的/ RO&amp; RW技术,但我认为它不适合我的问题...