Как установить время ожидания команды Nhibernate LINQ с помощью Session.Query
Кто-нибудь знает способ установить UnderlyingCriteria
когда используешь Session.Query
?
Я пытаюсь установить более ограниченный тайм-аут команды (или тайм-аут запроса) для одного конкретного запроса, и я пытаюсь избежать добавления этого ограничения на соединение или другие запросы в сеансе.
Я нашел в старом QueryOver
функциональность вы можете использовать что-то вроде этого
// QueryOver returns a IQueryOver<T,T> an nHibernate class
// with access to UnderlyingCriteria
var query = Session.QueryOver<Puppy>();
query.UnderlyingCriteria.SetTimeout(120);
Проблема в том, что он старый, глючный и просто имеет множество функциональных проблем.
С помощью Query
возвращает IQueryable<T>
var query = (from c in Session.Query<Puppy>());
IQueryable
класс MS без видимого доступа к тайм-аутам команд и т. д.
Другим вариантом было бы как-то установить тайм-аут команды сессий для всех команд, на этом этапе, а затем вернуться к значению по умолчанию, но я не вижу какого-либо общедоступного механизма для этого, кроме установки времени ожидания команды заранее и оставления так, Как установить время ожидания для оператора NHibernate LINQ
1 ответ
Не берите в голову, нашли пример в модульных тестах Nhibernate, они добавили несколько методов расширения в IQueryable.
var query = (from c in Session.Query<Puppy>()).Timeout(12);