6

有人知道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 语句设置超时

4

1 回答 1

5

没关系,在 Nhibernate 的单元测试中找到了一个示例,他们为 IQueryable 添加了一些扩展方法。

var query = (from c in Session.Query<Puppy>()).Timeout(12);
于 2014-01-02T19:45:27.007 回答