是否可以使用system.data.services.client执行动态查询

问题描述:

设置客户端的正常方式是通过使用VS UI或datasvcutil读取odata元数据来生成模型。有没有办法做到这一点,没有这一步。是否可以使用system.data.services.client执行动态查询

为什么?想象一下,试图制作一个通用的odata用户界面(这不是我正在做的,但同样的需要会存在)。我知道我可以做原始的HTTP/XML等,但这似乎是很多繁重的工作;寻找一个中途的房子。

客户端依赖于CLR类型来描述要使用的实体的形状。所以如果你需要一个通用的客户端(它不会了解它将要消耗的实体的形状),那么你需要为每个查询动态生成这些类型(在执行查询之前,这可能会非常棘手)。简言之,客户端不是为了支持这种情况而构建的。 您可以看看OData Explorer,它是一个Silverlight应用程序并实现了通用客户端。 (由于上述限制,它不使用WCF数据服务客户端)。它是本页上的示例之一:http://www.odata.org/developers/odata-sdk。你可以在这里试试:http://www.silverlight.net/content/samples/odataexplorer/