1

BreezeJS で特定の EntityTypes を展開できないようにするエレガントな方法を探しています。公開している (やや) パブリックな Web サービスがあり、そのサービスの一部のコンシューマーに表示されたくないテーブルがいくつかあります。これらの特定のテーブルの Web API メソッドのみを公開できますが、サービスのコンシューマーは、関連するテーブルから展開することでこれらのテーブルにアクセスできます。

注:この質問に対する回答を投稿し、回避策を示しました。しかし、この特定の猫の皮を剥ぐよりエレガントな方法を誰かが知っているかどうかに興味があります.

4

1 に答える 1

1

この機能を Breeze に正式に追加することを要求するUserVoice ページで、Ward Bell は適切な回避策を提案しています。

一方、コントローラでは、$select と $expand の存在についてリクエストからのクエリ文字列を調べ、それが見つかった場合は例外をスローすることができます。

これは次のようになると思います。

    [HttpGet]
    public IQueryable<Widget> Widgets() {
        if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["$expand"]))
        {
            throw new Exception("Ah ah ah, you didn't say the magic word!");
        }
        return _contextProvider.Context.Widgets;
    }

...すべての展開をブロックするか、機能自体の展開をブロックするためのより具体的なもの。これはあまりにもみすぼらしくはありませんが、「エレガント」ではありません。

(はい、それはジュラシック パークのリファレンスです。)

于 2013-02-01T13:53:05.827 に答える