日期:2014-05-18  浏览次数:20388 次

求救:NHibernate 多参数查询方法(动态传参)
废话不说,上代码。
/// <summary>
  /// 查询数据
  /// </summary>
  /// <returns></returns>
  public object GetListBySql(string sql)
  {
  object _rObj = null;
  using (ITransaction tx = _isSession.BeginTransaction())
  {
  try
  {
  _rObj = _isSession.CreateQuery(sql);
  tx.Commit();
  }
  catch (Exception e)
  {
  tx.Rollback();
  LogHelper.Error("系统异常:", e);
  }
  finally
  {
  FactorySessionHelper.CloseSession();
  }
  }
  return _rObj;
  }

  /// <summary>
  /// 查询数据(带参数,推荐使用)
  /// </summary>
  /// <param name="sql"></param>
  /// <param name="pars"></param>
  /// <returns></returns>
  public object GetListBySql(string sql, params object[] pars) {
  object _rObj = null;
  using (ITransaction tx = _isSession.BeginTransaction())
  {
  try
  {
  //IQuery _iquery = _isSession.CreateQuery(sql).
_rObj = _isSession.CreateQuery(sql); 
  ///他妹,就没有支持动态传参的方法。求高手点播。
  ///本人知道这个方法_isSession.CreateCriteria()可以动态传参,但是要穿实体,很恶心。
  tx.Commit();
  }
  catch (Exception e)
  {
  tx.Rollback();
  LogHelper.Error("系统异常:", e);
  }
  finally
  {
  FactorySessionHelper.CloseSession();
  }
  }
  return _rObj;
  }

------解决方案--------------------
建议你用criteria,不要用hql
另外新版本的nhibernate已经支持linq了。