0

ユーザーの権利とデータの取得にどのように適合するかを理解しようとしています。これは、次のような単純な作業ではありません。

GetInvoices where Invoice.UserId = 5

そのため、userId をメソッドに渡すことができますが、それは非常に複雑であり、必要以上に深くしたくないため、混乱を招きます。View は ViewModel でコマンドを呼び出し、ViewMOdel はリポジトリ メソッドを呼び出し、EF を使用してデータをフェッチします。ここで、ユーザー権限に基づいてこのデータをフィルタリングする必要があります。

論理的には、VIewModel はビジネス ルールを強制する必要があります。それは、ViewModel で IQueriable を作成し、それをモデルに渡す必要があるということですか?

というか、やってもいいです

... if (LoggedUser.Role.Permissions.any(x=> x.PErmissionType == somePermission) && ....)

(M)モデル側?

4

1 に答える 1

1

DALは、ユーザーのアクセス許可に基づいて結果をフェッチしてフィルター処理する必要があるものですつまり、VM は、ユーザーが表示を許可されているモデル/データのみを受信する必要があります。あなたが言ったように、
VM はビジネス ルールを適用しますが、モデル フィルタリングがこのカテゴリに当てはまるかどうかはわかりません。

あなたがすべきことは、VM がデータを要求するときです。VM は、アクセス許可 (ユーザー ID、またはユーザーが持っているアクセス許可のセット) に基づいてデータをフィルター処理するために必要なものをすべて渡し、彼に適合するデータのみを渡す必要があります。許可を返す必要があります。

于 2012-12-03T21:31:55.320 に答える