Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 通用单表删除方法
        /// </summary>
        /// <param name="info"></param>
        public void CommenDelete(TableEntityBase info)
        {
            PropertyInfo[] pis = info.GetPrimaryKey();
            if (pis == null || pis.Length != 1)
            {
                throw new LogicException("只有唯一主键的类适用于通用删除方法");
            }
            PropertyInfo pi  = pis.FirstOrDefault();
            string       key = pi.GetValue(info, null)?.ToString();

            if (string.IsNullOrWhiteSpace(key))
            {
                throw new LogicException("通用单表删除方法要求主键有值");
            }
            DbHelper.Delete(info);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 通用的单表存储方式
        /// </summary>
        /// <param name="info"></param>
        public string CommonSave(TableEntityBase info)
        {
            string key = "";

            PropertyInfo[] pis = info.GetPrimaryKey();
            if (pis == null || pis.Length != 1)
            {
                throw new LogicException("只有唯一主键的类适用于通用存储方法");
            }
            PropertyInfo pi = pis.FirstOrDefault();

            key = pi.GetValue(info, null)?.ToString();
            if (string.IsNullOrWhiteSpace(key))
            {
                key = NewINC(info);
                pi.SetValue(info, key, null);
            }
            DbHelper.Save(info);
            return(key);
        }