我必须在现有系统上实现基于模型的访问安全性,以防止用户从其他用户加载/更改数据。所以我为此创建了几个接口,并使模型类实现它们。 我有一个基本存储库类,它调用所有的查询,所以我只能在一个地方检查这些接口,一切都会工作。 它确实如此,但我不确定我是否打破了Future功能。
所以基本上,问题很简单,如果我在每个Future()调用之后调用这个扩展方法,它会立即触发查询(打破未来的目的)吗? Where()或者转换为接口会强制Future立即执行吗?
internal static IEnumerable<TX> ApplyRestrictions<TX>(this IEnumerable<TX> results, IUnitOfWork uow)
{
if (typeof(IContextUser).IsAssignableFrom(typeof(TX)))
{
var currentUser = uow.UserRepository.FindCurrentUser();
return results.Where(x => (x as IContextUser).User == currentUser);
}
if (typeof(IContextCompany).IsAssignableFrom(typeof(TX)))
{
var currentCompany = uow.CompanyRepository.FindCurrentCompany();
return results.Where(x => (x as IContextCompany).Company == currentCompany);
}
return results;
}
答案 0 :(得分:0)
没关系,我只是用Glimpse进行了测试。 NOT 会触发即时查询,这很棒。