私のデータベースは次のようになります。
[テーブル] UserProfile
- ユーザー名
【表】カテゴリー
- カテゴリ ID (PK)
- UserName (UserProfile へのリンク - これはレコードの所有者です)
- ProductID (製品テーブル関連レコードへの外部キー)
【表】製品
- 製品 ID (PK)
- CategoryId (ナビゲーション プロパティ)
ログオンしたユーザーは、自分が所有するカテゴリーと製品のみを編集できます。コントローラーがビューから受け取った User.Identity.Name と CategoryID に基づいて、Category をルックアップするだけで十分です。レコードが返されない場合は、レコードが存在しないか、ユーザーが所有していません。それ。これは最善の方法ではないと思い始めましたが、うまくいきます...
私の質問は、製品に関するこの種のチェックを処理する最善の方法に関するものですか?
- ProductId へのナビゲーション プロパティを使用して
UserName
値を取得するクエリを作成する必要がありますか? - これは、コントローラーの linq クエリまたは Products クラスのメソッドで行う必要がありますか? すなわち
prod.ConfirmOwnerIs(User.Identity.Name)
- これは のような外部ヘルパー メソッドにする必要があり
Helpers.ConfirmUserCanEditObject(prod, User.Identity.Name)
ますか?
この例は少し単純化されており、実際のデータ モデルは数層の深さです。これは私にとって学習プロジェクトなので、不必要に、または非効率的な方法で DB にアクセスしたり、保守やテストが面倒になったりすることを避けようとしています。ここで何らかのガイダンスと知恵を期待しています。ありがとう。