我的数据库如下所示:
[表格] 用户资料
- 用户名
[表格] 类别
- 类别 ID (PK)
- UserName(链接到 UserProfile - 这是记录所有者)
- ProductID(FK 到 Product Table 相关记录)
[表]产品
- 产品 ID (PK)
- CategoryId(导航属性)
登录用户只能编辑他们拥有的类别和产品。我很高兴根据控制器从视图中收到的 User.Identity.Name 和 CategoryID 查找 Category,如果我没有得到记录,那么它不存在或用户不拥有它。我开始认为这不是最好的方法,但它确实有效......
我的问题与处理此类产品检查的最佳方式有关?
- 我是否应该有一个使用 ProductId 的导航属性来获取
UserName
值的查询? - 这应该通过控制器中的 linq 查询还是 Products 类的方法来完成?IE
prod.ConfirmOwnerIs(User.Identity.Name)
- 这应该是一个外部帮助方法
Helpers.ConfirmUserCanEditObject(prod, User.Identity.Name)
吗?
这个例子稍微简化了,我的真实数据模型有好几层。这对我来说是一个学习项目,所以我试图避免做一些不必要或以低效方式影响数据库的事情,或者成为维护和测试的野兽。我希望在这里得到一些指导和智慧。谢谢。