1

おそらく単純な問題または誤解しているものに少し苦労しています...しかし、とにかく、最初にLinqエンティティコードを使用して、テーブルの一部をクライアントからアクセスできないようにしようとしていますが、成功していません.

Breeze を使用して、公開したい dbset のみを保持するデータ コンテキストを作成しました。しかし、.expand() を使用してクエリを作成すると、たとえば、公開したい posts テーブルと、非表示にしたい Owner テーブルがあるとします。次のようなクエリを使用します。

var query = EntityQuery
            .from('Posts')
            .expand('Owner');

所有者のすべての列を引き続き表示できます。

問題は、Linq では、非表示にしたいテーブルや特定の列をどのように保護/保護/非表示にすることになっているのでしょうか?

掘り下げた後、私が見つけたのは [JsonIgnore] 属性だけで、これでは不十分だと思われます。

これを行う最善の方法は何ですか?ここでおそらく大きな何かが欠けているように感じますが、ここで一日の終わりです...

ありがとう

4

2 に答える 2

1

Breeze の WebApi 実装を使用している場合、Breeze は ODataQueryOptions もサポートします (こちらこちらを参照)。

これにより、コントローラー メソッドをマークアップして、クエリの解釈方法を制限できます。たとえば、「投稿」クエリのフィルタリングのみを許可し、「投稿」リクエストから「所有者」を「展開」または「選択」する機能を除外するには、次のようにします。

[Queryable(AllowedQueryOptions=AllowedQueryOptions.Filter| AllowedQueryOptions.Top | AllowQueryOptions.Skip)]
public IQueryable<Posts> Posts() {
  ....

}

于 2013-06-04T17:26:45.513 に答える
0

どうやら私の質問はすでにここで対処されているようです: OData と IQueryable を使用するリスク

私はちょうどそれを見つけました。

于 2013-06-04T16:31:33.710 に答える