2015-03-04 2 views
0

Я должен реализовать основанную на модели защиту доступа на существующей системе, чтобы пользователи не могли загружать/изменять данные от других пользователей. Поэтому я создал пару интерфейсов для этой цели и сделал классы моделей. У меня есть базовый класс репозитория, который вызывает все запросы, поэтому я могу проверить эти интерфейсы только в одном месте, и все будет работать. И это так, но я не уверен, что я сломал функцию Future в то же время.NHibernate - выполняет ли LINQ Where() после будущего() триггерного запроса?

Так что, в основном, вопрос очень прост, если я вызову этот метод расширения после каждого вызова Future(), будет ли он немедленно инициировать запрос (нарушая цель будущего)? Does Where() или литье в силу интерфейса Будущее немедленно выполнить?

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

Nevermind, я только что проверил его с помощью Glimpse. Он делает NOT вызывает немедленный запрос, и это здорово.

Смежные вопросы