我对我的ORM使用Fluent NHibernate。在这样做时,我试图使用NHibernate LINQ语法来获取一组具有LINQ功能的数据。我的代码工作并正确执行,但例外情况是,如果超过大约30秒的时间运行,则会引发超时。我的问题是如何通过NHibernate扩展LINQ语句的默认30秒超时?如何设置NHibernate的LINQ语句的超时时间
我已经看到了帖子here,here,并且here但前两个指设置的DataContext的超时属性,在这里不适用,第三是指设置在XML超时,这也是不适用因为我使用流利NHibernate来即时生成XML。不仅如此,而且这篇文章还有2年的历史,而流利的NHibernate自此也发生了变化。
随着ICriteria对象,甚至HQL我可以指定超时,但这不是目标。我想知道如何设置相同的超时并使用LINQ。
示例代码:
using (var session = SessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
var query = (from mem in session.Query<Member>()
select mem);
query = query.Where({where statement});
int start = (currentPage - 1) * max);
if (start > 0)
query = query.Skip(start).Take(max);
else
query = query.Take(max);
var list = query.ToList();
transaction.Commit();
return list;
}
此代码(where语句无所谓)适用于除非发生超时所有目的。
任何帮助表示赞赏。提前致谢!
查看答案由kingpin2k。为我工作很好。 –