0

組織内のアプリケーションで使用されている wcf データ サービスがあります。次のエンティティが含まれています。

Client
User
Membership

データはマルチテナントとして設定されており、現在、クライアント文字列と呼ばれるもの、またはクライアントの一意の ID の文字列表現をパスの一部として渡す必要があり、それを抽出してフィルターとしてインターセプターをクエリします。これは、多くの子を持つ親 clientstring を持つ新しいクライアントが搭載された最近まで、うまく機能していました。したがって、結果は、すべてのクエリに対して "in (.....)" として渡された clientids のリストを含むクエリです。それほど悪くはありませんが、このクライアントがメンバーシップを照会しようとすると、9,000 以上のクライアント ID が渡されます。結果のクエリは、単独で実行するとかなり速く実行されるように見えますが、db トランザクション全体が一貫して 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 に答える