我需要为NHibernate LINQ查询设置超时。事件虽然我编写了代码并且代码在运行时编译但我得到了错误
"Method not found: 'System.Linq.IQueryable`1<!!0> NHibernate.Linq.LinqExtensionMethods.Timeout(System.Linq.IQueryable`1<!!0>, Int32)
正在使用的版本是
`<package id="NHibernate" version="3.3.3.4001" targetFramework="net452" />`
代码看起来像这样
var gpq = (from spg in session.Query<Table1>()
join spgm in session.Query<Table2>()
on spg.Table1Key equals spgm.Table2Key join sp in session.Query<Table3>() on spgm.Table2ID equals sp.Table3ID orderby spg.Table1ID
select spg).Timeout(120).Distinct();
var groups = gpq.ToList();
有人可以建议我做错了吗。
答案 0 :(得分:0)
如果Timeout()
返回新的IQueryable
,您需要分配或链接它:
var gpq = (
from spg in session.Query<Table1>()
join spgm in session.Query<Table2>() on spg.Table1Key equals spgm.Table2Key
join sp in session.Query<Table3>() on spgm.Table2ID equals sp.Table3ID
orderby spg.Table1ID
select spg
).Distinct();
var groups = gpq.Timeout(120).ToList();
但是,查看来源,Obsolete
方法有Timeout()
属性。它说使用WithOptions()
方法代替:
var groups = qpq.WithOptions(options => options.SetTimeout(120)).ToList();