【发布时间】:2012-07-26 19:11:11
【问题描述】:
我有一个 wcf 数据服务,我的组织内的应用程序正在使用它。它包含以下实体:
Client
User
Membership
数据被设置为多租户,目前需要我们称之为客户端字符串或客户端唯一 ID 的字符串表示形式作为路径的一部分传入,我将其提取并添加在查询拦截器中作为过滤器。直到最近,当我们有一个新客户加入时,这一直很有效,他的父客户字符串有很多孩子。因此,结果是一个查询,其中包含作为“in (.....)”为所有查询传入的 clientids 列表。还不错,但是当这个客户端现在尝试查询成员资格时,他们传入了 9k+ 个客户端 ID。结果查询在单独执行时似乎运行得相当快,但整个 db 事务持续花费 >30 秒。
如果提供了特定的用户 ID,我最终希望找到一种方法来绕过此类查询的此过滤器。网址如下所示:
http://service.com/clienta/Users(1234)/memberships
如果为用户或会员提供了特定的 ID,我可以避免过滤器,因为它有效地实现了相同的最终结果。我们不能拥有这样的人:
http://service.com/clienta/memberships
没有任何过滤器。
我意识到这可能是分散的,需要更多细节,因为这有点仓促。请提出任何问题。非常感谢任何帮助或指导。
【问题讨论】:
标签: c# c#-4.0 wcf-data-services