如何使用 Session.Query 设置 Nhibernate LINQ 命令超时



有没有人知道在使用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);

相关内容

  • 没有找到相关文章