【发布时间】:2017-12-23 23:55:35
【问题描述】:
假设我有一个表X,其中列有:Name、Role。主页显示来自表X 的Name's 列表。当以某个特定用户(分配了 ASP.NET 角色)身份登录时,我只想显示 Name's 列表,以显示 Role 与当前登录用户匹配的行。这是否可能通过例如以某种方式装饰 EF 功能?我想避免在应用程序中调用GetList 的所有地方对if's 进行硬编码。
我首先使用 EF 6 和 db、ASP.NET、MVC 6。
编辑
GetList 方法是 GenericDataRepository 的一部分:
public virtual IList<T> GetList(Expression<Func<T, bool>> where, params Expression<Func<T, object>>[] navigationProperties)
{
IQueryable<T> dbQuery = this.Context.Set<T>();
foreach (var navigationProperty in navigationProperties)
{
dbQuery = dbQuery.Include(navigationProperty);
}
var list = dbQuery.AsNoTracking().Where(@where).ToList();
return list;
}
【问题讨论】:
-
有可能,但不是通过装饰方法。可以通过过滤 EF 层中的角色来实现。
-
@ChetanRanpariya 通过“过滤”你的意思是改变所有
GetList方法? -
GetList 方法属于哪个类?谁调用那个方法?能分享一下GetList方法的代码吗?
-
@ChetanRanpariya 我用代码示例编辑了帖子。许多其他特定的存储库正在调用此方法。
-
我说错了,特定的存储库不是针对角色的,而是针对业务实体的。但是我发现THIS 非常有用,我认为这是我的问题的答案。无论如何感谢您的建议。
标签: c# asp.net asp.net-mvc entity-framework model-view-controller