0

我必须在现有系统上实现基于模型的访问安全性,以防止用户加载/更改其他用户的数据。所以我为此目的创建了几个接口并让模型类实现它们。我有一个调用所有查询的基础存储库类,所以我只能在一个地方检查这些接口,一切都会正常工作。确实如此,但我不确定我是否同时破坏了 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;
}
4

1 回答 1

0

没关系,我只是用 Glimpse 测试了它。它不会触发立即查询,这很棒。

于 2015-03-04T10:29:14.277 回答