MVVM体系结构 - 用户权限和获取数据

时间:2012-12-03 20:38:45

标签: entity-framework mvvm

我试图弄清楚如何适应用户权限和获取数据。这不是一个简单的任务,如

GetInvoices where Invoice.UserId = 5

所以我可以将userId传递给一个方法,但它非常复杂,而且我不想比需要更深入,它会造成混乱。 Currenly它的工作方式如下:View调用ViewModel上的命令,ViewMOdel调用存储库方法,使用EF获取数据。现在我需要根据用户权限过滤这些数据。

逻辑上,VIewModel应该强制执行业务规则。这是否意味着我应该在ViewModel中创建IQueriable,并将其传递给模型?

或者,可以做

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

在(M)奥德尔一侧?

1 个答案:

答案 0 :(得分:1)

您的 DAL 是根据用户的权限获取和过滤结果的 {{3}} 。换句话说,VM应该只接收用户可以看到的模型/数据 如您所述,VM会强制执行业务规则,但我不确定模型过滤是否适合此类别。

你应该做的是当VM请求数据时,他应该传递根据权限(用户ID或用户拥有的权限集)过滤数据所需的任何内容,并且只传递数据应该返回适​​合他的权限。