有没有人知道在使用Session.Query
时设置UnderlyingCriteria
的方法?
正在尝试为一个特定查询设置更严格的命令超时(或查询超时),并且我试图避免在会话中的连接或其他查询上添加该约束。
我发现在旧的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 语句设置超时
关系,在Nhibernate的单元测试中找到了一个示例,他们在IQueryable中添加了一些扩展方法。
var query = (from c in Session.Query<Puppy>()).Timeout(12);