我想在我的方法调用中传递一个参数,如果设置(它是一个布尔值),然后返回一个无状态会话。
我不想复制QueryOver代码,有没有办法让它像:
public virtual IList<User> GetAllUsers(bool isStateless)
{
var query = QueryOver<User>().Where(x => x.UserType == 1).ToList();
if(isStateless)
return NHibernateHelper.Session(query);
else
return NHibernateHelper.StatelessSession(query);
}
我知道上述情况不会奏效,但我希望我很清楚我的目标。
我知道的唯一方法是基本上复制整个查询代码,并且代码块之间唯一不同的是将使用。Session
而另一个将使用。StatelessSession
。< / p>
希望有一种更清洁的方式。
答案 0 :(得分:2)
var query = QueryOver.Of<User>().Where(x => x.UserType == 1);
IQueryOver<User, User> executableQuery;
if(isStateless)
executableQuery = query.GetExecutableQueryOver(NHibernateHelper.Session);
else
executableQuery = query.GetExecutableQueryOver(NHibernateHelper.StatelessSession);
return executableQuery.ToList();