WCF数据服务条件查询拦截器

时间:2012-07-26 19:11:11

标签: c# c#-4.0 wcf-data-services

我的组织中的应用程序正在使用wcf数据服务。它包含以下实体:

Client
User
Membership

数据以多租户方式设置,目前需要我们称之为客户端字符串或客户端唯一ID的字符串表示形式作为路径的一部分传入,我将其提取并添加在查询拦截器中作为过滤器。直到最近,当我们有一个新客户加入到一个有很多孩子的父母客户串时,这一直工作得非常好。因此,结果是一个查询,其中包含所有查询传入的clientid列表,如“in(.....)”。还不错,但是当这个客户端现在尝试查询成员资格时,他们已经传入了9k + clientids。单独执行时,生成的查询似乎运行得相当快,但整个数据库事务的持续时间大约为30秒。

如果提供了特定的用户标识,我最终会想要找到一种方法绕过此过滤器以进行此类查询。 URL如下所示:

http://service.com/clienta/Users(1234)/memberships

如果为用户或成员资格提供了特定的ID,我可以避免使用过滤器,因为它可以有效地实现相同的最终结果。我们不能拥有的是某人做这样的事情:

http://service.com/clienta/memberships

没有任何过滤器。

我意识到这可能是分散的,需要更多的细节,因为这有点匆忙。请问任何问题。非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:0)

您是否可以使用查询拦截器拦截请求,如果满足您的条件以避免过滤,只需忽略它?

您还可以转到服务方法并传入您的参数并执行您想要做的任何事情。