/// <summary> /// 查询,按照所有不为空的条件查询 /// </summary> /// <param name="Filter">查询类</param> /// <param name="TInfo">返回类型</param> /// <param name="TFilter">查询类型</param> /// <returns></returns> public List <TableEntityBase> SelectList(TableEntityBase Filter, Type TInfo, Type TFilter) { List <TableEntityBase> res = new List <TableEntityBase>(); TableEntityBase refinfo = TableEntityBase.Create(TInfo); PropertyInfo[] Allprop = Filter.GetAllSelectField().Where(a => { return(a.GetValue(Filter, null) != null); }).ToArray(); IDbDataParameter[] dbprams = Allprop.Select(a => { IDbDataParameter p = GetDbDataParameter(a, Filter); return(p); }).ToArray(); RunSql(_dbCommand => { _dbCommand.Parameters.Clear(); _dbCommand.Parameters.AddRange(dbprams); string tablename = refinfo.GetTableName(); string select = string.Join(",", refinfo.GetAllField().Select(a => GetFieldName(a.Name))); string where = string.Join(" and ", Allprop.Select(a => a.Name + "=" + GetPramCols(a.Name))); _dbCommand.CommandText = string.Format(_select, select, tablename, where.IsEmpty(" 1=1 ")); using (DbDataReader reader = _dbCommand.ExecuteReader()) { res = this.ReaderToEntity(TInfo, reader).ToList(); } }); res.ForEach(a => a = _SelectChildren(a)); return(res); }
/// <summary> /// 删除,按照非null的进行删除,全null抛出异常 /// </summary> /// <exception cref="DataBaseException"></exception> /// 没有删除条件 /// <param name="info"></param> /// <returns></returns> public int DeleteList(TableEntityBase info) { int res = 0; PropertyInfo[] Allprop = info.GetAllSelectField().Where(a => { return(a.GetValue(info, null) != null); }).ToArray(); IDbDataParameter[] dbprams = Allprop.Select(a => { IDbDataParameter p = GetDbDataParameter(a, info); return(p); }).ToArray(); string tablename = info.GetTableName(); string where = string.Join(" and ", Allprop.Select(a => a.Name + "=" + GetPramCols(a.Name))); if (string.IsNullOrEmpty(where)) { throw new DataBaseException("没有删除条件,不能删除"); } RunSql(_dbCommand => { _dbCommand.Parameters.Clear(); _dbCommand.Parameters.AddRange(dbprams); _dbCommand.CommandText = string.Format(_delete, tablename, where); res = _dbCommand.ExecuteNonQuery(); }); return(res); }
/// <summary> /// 删除,按照主键进行删除 /// </summary> /// <param name="info"></param> /// <returns></returns> public int Delete(TableEntityBase info) { int res = 0; _DeleteChildren(info); IDbDataParameter[] dbprams = info.GetPrimaryKey().Select(a => { if (a.GetAttribute <PrimaryKeyAttribute>() != null) { if (string.IsNullOrEmpty(a.GetValue(info, null)?.ToString())) { throw new DataBaseException("字段:" + a.Name + "是主键,在删除时不能为空"); } } IDbDataParameter p = GetDbDataParameter(a, info); return(p); }).ToArray(); string tablename = info.GetTableName(); string where = string.Join(" and ", info.GetPrimaryKey().Select(a => a.Name + "=" + GetPramCols(a.Name))); if (string.IsNullOrEmpty(where)) { throw new DataBaseException("没有主键,不能删除"); } RunSql(_dbCommand => { _dbCommand.Parameters.Clear(); _dbCommand.Parameters.AddRange(dbprams); _dbCommand.CommandText = string.Format(_delete, tablename, where); res = _dbCommand.ExecuteNonQuery(); }); return(res); }
public int Save(TableEntityBase info) { IDbDataParameter[] dbprams = info.GetPrimaryKey().Select(a => { if (a.GetAttribute <PrimaryKeyAttribute>() != null) { if (string.IsNullOrEmpty(a.GetValue(info, null)?.ToString())) { throw new DataBaseException("字段:" + a.Name + "是主键,在保存时不能为空"); } } IDbDataParameter p = GetDbDataParameter(a, info); object value = a.GetValue(info, null); p.Value = (value == null || string.IsNullOrEmpty(value.ToString()) ? DBNull.Value : value); return(p); }).ToArray(); int i = 0; RunSql(_dbCommand => { _dbCommand.Parameters.Clear(); _dbCommand.Parameters.AddRange(dbprams); string tablename = info.GetTableName(); string where = string.Join(" and ", info.GetPrimaryKey().Select(a => a.Name + "=" + GetPramCols(a.Name))); _dbCommand.CommandText = string.Format(_selectcount, tablename, where); using (DbDataReader reader = _dbCommand.ExecuteReader()) { if (reader.Read()) { i = reader.GetValue(0).ToString().ToInt(); } } }); if (i == 0) { return(Insert(info)); } else { return(Update(info)); } }
/// <summary> /// 插入 /// </summary> /// <param name="info"></param> /// <returns></returns> public int Insert(TableEntityBase info) { int res = 0; IDbDataParameter[] dbprams = info.GetInserrtField().Select(a => { IDbDataParameter p = GetDbDataParameter(a, info); return(p); }).ToArray(); RunSql(_dbCommand => { _dbCommand.Parameters.Clear(); _dbCommand.Parameters.AddRange(dbprams); _dbCommand.CommandText = string.Format(_insert, info.GetTableName(), string.Join(",", dbprams.Select(a => a.ParameterName)), string.Join(",", dbprams.Select(a => GetPramCols(a.ParameterName))) ); res = _dbCommand.ExecuteNonQuery(); }); #region 处理子表 _InsertChildren(info); #endregion return(res); }
/// <summary> /// 获取新的记录编号 /// </summary> /// <returns></returns> public string NewINC(TableEntityBase info) { return(NewINC(info.GetTableName())); }