/// <summary> /// 封装数据表数据到实体集合的方法 /// </summary> /// <param name="cmdType">命令类型</param> /// <param name="cmdText">要执行的SQL语句或存储过程名称</param> /// <param name="values">SQL语句或存储过程的参数列表</param> /// <returns>返回实体类的集合</returns> protected List <T> GetBySql(CommandType cmdType, string cmdText, SqlParameter[] values) { using (SqlDataReader reader = DBHelper.GetReader(DBHelper.CONSTR, cmdType, cmdText, values)) { List <T> lst = new List <T>(); Type entityType = typeof(T); PropertyInfo[] properties = entityType.GetProperties(); Dictionary <string, XmlClassMap> dic = EntityMapperHandler.GetInstance().GetMapDictionary(); XmlClassMap classMap = dic[entityType.Name]; while (reader.Read()) { T entity = (T)entityType.Assembly.CreateInstance(entityType.FullName); foreach (PropertyInfo property in properties) { if (property.CanWrite && classMap.Properties.ContainsKey(property.Name)) { object value = reader[classMap.Properties[property.Name].ColumnName]; if (value != null && value != DBNull.Value) { property.SetValue(entity, value, null); } } } lst.Add(entity); } reader.Close(); return(lst); } }
private string procedureName = "MesnacPaging"; //分页存储过程名 #endregion #region 构造方法 public BaseService() { //获取实体类T的映射信息 this.classMap = EntityMapperHandler.GetInstance().GetMapDictionary()[typeof(T).Name]; //获取实体类的属性信息 PropertyInfo[] pis = typeof(T).GetProperties(); foreach (PropertyInfo pi in pis) { if (this.classMap.Properties.ContainsKey(pi.Name)) { this.properties.Add(this.classMap.Properties[pi.Name].ColumnName, pi); } } }
/// <summary> /// 分页查询方法,基于分页存储过程 /// </summary> /// <param name="pageResult">用于传递查询条件的分页类的对象</param> /// <returns>返回封装了页面数据和总记录数据的分页类对象</returns> public PageResult <T> GetPageData(PageResult <T> pageResult) { SqlParameter[] values = { new SqlParameter("TableName", pageResult.TableName), new SqlParameter("ReturnFields", pageResult.ReturnFields), new SqlParameter("PageSize", pageResult.PageSize), new SqlParameter("PageIndex", pageResult.PageIndex), new SqlParameter("Where", pageResult.Where), new SqlParameter("Orderfld", pageResult.Orderfld), new SqlParameter("OrderType", pageResult.OrderType) }; using (SqlDataReader reader = DBHelper.GetReader(DBHelper.CONSTR, CommandType.StoredProcedure, this.procedureName, values)) { List <T> lst = new List <T>(); Type entityType = typeof(T); PropertyInfo[] properties = entityType.GetProperties(); Dictionary <string, XmlClassMap> dic = EntityMapperHandler.GetInstance().GetMapDictionary(); XmlClassMap classMap = dic[entityType.Name]; //提取当前页的数据 while (reader.Read()) { T entity = (T)entityType.Assembly.CreateInstance(entityType.FullName); foreach (PropertyInfo property in properties) { if (property.CanWrite && classMap.Properties.ContainsKey(property.Name)) { object value = reader[classMap.Properties[property.Name].ColumnName]; if (value != null && value != DBNull.Value) { property.SetValue(entity, value, null); } } } lst.Add(entity); } pageResult.Data = lst; //提取总记录数 if (reader.NextResult()) { while (reader.Read()) { pageResult.RecordCount = Convert.ToInt32(reader["RecordCount"]); break; } } reader.Close(); } return(pageResult); }
public PageResult() { //this.tableName = EntityMapperHandler.GetInstance().GetTableNameByClassType(typeof(T)); XmlClassMap classMap = EntityMapperHandler.GetInstance().GetMapDictionary()[typeof(T).Name]; this.tableName = classMap.TableName; if (classMap.Identity != null) { this.orderfld = classMap.Identity.ColumnName; } else if (classMap.Ids.Keys.Count > 0) { foreach (XmlPropertyMap pm in classMap.Ids.Values) { this.orderfld = pm.ColumnName; break; } } }