如何在我的方法中传递参数以使用无状态会话返回?最小化代码重复

时间:2011-09-26 16:50:22

标签: nhibernate fluent-nhibernate

我想在我的方法调用中传递一个参数,如果设置(它是一个布尔值),然后返回一个无状态会话。

我不想复制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>

希望有一种更清洁的方式。

1 个答案:

答案 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();