NHibernate - 在Future()触发查询之后做LINQ Where()吗?

时间:2015-03-04 09:47:20

标签: c# linq nhibernate nhibernate-futures

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

1 个答案:

答案 0 :(得分:0)

没关系,我只是用Glimpse进行了测试。 NOT 会触发即时查询,这很棒。