动态使用WCF数据服务资源

时间:2011-03-17 20:39:55

标签: c# wcf dynamic-data

我有一个WCF数据服务,它公开了一个Entity Framework数据库上下文和EntitySet,

public class DatabaseService : DataService<DatabaseContext>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {

        // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
        // Examples:

        config.SetEntitySetAccessRule("People", EntitySetRights.AllRead);

        // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

是否可以以允许我使用完整URI动态构建查询的方式使用此服务?

IE中。我将使用的URI是

http://localhost:1353/DatabaseService.svc/People?$ filter(我的过滤器)

我不希望我的任何查询都被硬编码,只需通过更改基于字符串的URI动态调用。

非常确定它可能,但是实现简单还是需要很多代码,比如WCF服务的完整动态代理?

我以前只用普通的SOAP服务做过这样的事情。

修改

更具体地说,我希望能够像这样有效地做点什么,

IEnumerable<People> peopleResults = new DataServiceQuery("http://localhost:1353/DatabaseService.svc/People?$filter (my filter here)")

将结果填充到我的列表中,而客户端除了完整的URI(包括过滤器和所有内容)之外不必知道任何内容。

1 个答案:

答案 0 :(得分:1)

DataServiceQuery类,一旦为类型构造,就有一个RequestUri,您可以设置它来自定义查询。我不知道这是规范用法,但肯定会有用。