Как установить время ожидания команды 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);
Другие вопросы по тегам