0

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

Client
User
Membership

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

如果提供了特定的用户 ID,我最终希望找到一种方法来绕过此类查询的此过滤器。URL 如下所示:

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

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

http://service.com/clienta/memberships

没有任何过滤器。

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

4

1 回答 1

0

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

您还可以转到服务方法并传递您的参数,然后做任何您想做的事情。

于 2012-07-30T13:20:52.633 回答