/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="spName">存储过程名称</param>
/// <param name="paramInfos">存储过程(字段-值)对</param>
/// <returns></returns>
protected IList ExecuteStoredProc(
string spName, Dictionary<
string,
string> paramInfos)

{

IList result =
new ArrayList();

ISessionFactoryImplementor s = (ISessionFactoryImplementor)cfg.BuildSessionFactory();

IDbCommand cmd = ((NHibernate.Driver.SqlClientDriver)s.ConnectionProvider.Driver).CreateCommand();

cmd.CommandText = spName;

cmd.CommandType = CommandType.StoredProcedure;
// 加入参数
if (paramInfos !=
null)

{
foreach (KeyValuePair<
string,
string> de
in paramInfos)

{

IDbDataParameter parameter = cmd.CreateParameter();

parameter.ParameterName = de.Key.ToString();
// driver.FormatNameForSql( info.Name ); 
parameter.Value = de.Value;

cmd.Parameters.Add(parameter);

}

}

IDbConnection conn = s.OpenConnection();
try 
{

cmd.Connection = conn;

IDataReader rs = cmd.ExecuteReader();
while (rs.Read())

{
int fieldCount = rs.FieldCount;

List<
object> list =
new List<
object>();
object[] values =
new Object[fieldCount];
for (
int i = 0; i < fieldCount; i++)

values[i] = rs.GetValue(i);

result.Add(values);

}

}
finally 
{

s.CloseConnection(conn);

}
return result;

}