特定のユーザーが特定の時間に利用できるアイテムをクエリするためにServiceOperationを持っています。要するに このMethodeの処理を行います。IQueryableを返すServiceOperationでいくつかのエンティティを操作することは可能ですか
var fullResult = from i in Items where ... select i; //get ALL possible items where...,
これはアイテム{A、B、C、D}を返すとしましょう。 2番目のクエリは、呼び出し元のユーザーがアクセス可能なアイテムをフィルタリングします。
var clientResult = from ci in fullResult where (privilege's and schedule's are true)
このダニは{A、C}になり、返されます。 クライアント側の結果は次のとおりです。クライアントがアクセスできる項目の一覧のみが表示されます。これは検索に間違いがあったかどうかわからないので、迷惑になることがあります。
クライアント{A、B、C、D}のすべての可能な結果を表示することができますが、この場合FLAG BとDは使用できないと表示されます。
私のエンティティはすでにisReadOnlyプロパティを使用しています。
フィルタをかけるだけでなく、残りの結果を読み取り専用としてフラグを立てることはできますか?理想的な結果は、{A、B.isREadOnly = true、C、D.isReadOnly = true}です。
また、実行可能な制限に達しましたか、伝統的なWCF Webメソッドを作成して、別のクラス、結果のリストを返しますか?
PS:この「IsReadOnlyの」プロパティは、これだけのために使用されている私がいた場合、私はそれがすべてのポインタのためのすべての
ありがとうでDBに変更され
アンドレアス
私はフォローアップQを持っています。私のモデル(すなわち、エンティティA(DB)、AExtra(MyOwnEntity))内のDBエンティティに拡張エンティティを追加する必要があります。 私は変更インターセプタでいくつかの魔法をしなければならないと思いますが、変更を保存するにはどうすればいいですか? ? –
Andreas
はい、更新する必要があるときに変更トラッキングを失うと、コンテキストから再度取得し、AExtraのプロパティを設定して保存する必要があります。コンテキストがまだ残っていると、キャッシュされたバージョンが返される可能性があります。そのため、エンティティを元に戻してプロパティを設定すると、効率的ではありません。SQLプロファイラなどでクエリを確認してください。私はいつもエンティティフレームワークのバックエンドで通常のwcfサービスを使用していますので、データサービスにはこれを別の方法で実行できる方法があるかどうかは言えません – kmp
私は試してみるつもりです。唯一のオプションです。私はこの操作を別のServiceOperation呼び出しで終了しているので、この場合は変更トラッキングダニを紛失しても問題ありません。 〜 – Andreas