是否有人知道在使用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类,没有明显的命令超时访问权等。
另一种选择是以某种方式为所有命令设置会话命令超时,此时,然后恢复为默认值,但我没有看到任何公共机制来执行此操作,除了先设置命令超时就这样,就像How to set timeout for NHibernate LINQ statement
一样答案 0 :(得分:4)
没关系,在Nhibernate的单元测试中找到了一个例子,他们为IQueryable添加了一些扩展方法。
var query = (from c in Session.Query<Puppy>()).Timeout(12);