/// <summary> /// 执行存储过程读取数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="strProcedure"></param> /// <param name="strErrText"></param> /// <returns></returns> protected List <T> LoadData <T>(string strProcedure, out string strErrText) { List <T> models = new List <T>(); SqlDataReader dr = null; try { SqlCommand command = new SqlCommand(); command.Connection = m_conn; command.CommandTimeout = 7200; command.CommandText = strProcedure; command.CommandType = CommandType.StoredProcedure; m_strInfoMessage = string.Empty; dr = command.ExecuteReader(); DynamicBuilder <T> builder = DynamicBuilder <T> .CreateBuilder(dr); while (dr.Read()) { T model = default(T); model = builder.Build(dr); models.Add(model); } //用于获取存储过程RaiseError命令发出的错误消息。 //如果存储过程中执行了RaiseError命令,则调用NextResult时就会引发异常 dr.NextResult(); dr.Close(); dr.Dispose(); strErrText = string.Empty; return(models); } catch (Exception e) { if (dr != null) { dr.Close(); dr.Dispose(); } strErrText = e.Message; return(null); } }