【发布时间】:2017-12-31 03:27:12
【问题描述】:
我试图弄清楚如何根据角色动态授权我的上下文。
public interface IConstraintResolver
{
Expression<Func<TEntity, bool>>[] GetConstraintsForTypeByRole<TEntity>()
where TEntity : class;
}
public class AuthorizationContext : DbContext
{
protected IConstraintResolver _constraintResolver;
public AuthorizationContext(IConstraintResolver constraintResolver)
{
this._constraintResolver = constraintResolver;
}
public override DbSet<TEntity> Set<TEntity>()
{
var defaultSet = base.Set<TEntity>();
var constraints = this._constraintResolver.GetConstraintsForTypeByRole<TEntity>();
var filteredSet = base.Set<TEntity>().AsQueryable();
foreach(var constraint in constraints)
{
filteredSet = filteredSet.Where(constraint);
}
//how do I apply this back to the innerQueryable
return filteredSet;
}
}
我的问题是,在应用我的可查询对象后,如何将其设为 Set 的默认可查询对象。
我找到了一个适用于旧 DbSet here 的 gyst
但是 .Net Core 不包含 IDBSet
如何创建自定义 dbset,或者如何过滤现有 dbSet?
【问题讨论】:
-
@SlavaUtesinov 仍然可以保存和连接到更改跟踪器等。我觉得应该有一种简单的方法来过滤这个集合
标签: c# entity-framework authorization .net-core filtering