Example #1
0
        /// <summary>
        /// 泛型方法,反射生成UpdateSql语句
        /// </summary>
        /// <param name="entity">实体类</param>
        /// <returns>int</returns>
        public static StringBuilder UpdateEntitySql <T>(T entity)
        {
            Type          type  = entity.GetType();
            StringBuilder sbSql = new StringBuilder();

            sbSql.Append($"Update {type.GetMappingAttributeName()} SET ");
            bool   isFirstValue = true;
            string pkName       = AttributeHelper.GetEntityPrimaryKey <T>();

            PropertyInfo[] props = type.GetProperties();
            foreach (PropertyInfo prop in props)
            {
                string columnName = prop.GetMappingAttributeName();
                if (prop.GetValue(entity, null) != null && pkName != columnName)//不更新主键
                {
                    if (isFirstValue)
                    {
                        isFirstValue = false;
                        sbSql.Append(columnName);
                        sbSql.Append("=");
                        sbSql.Append(DbParameters.CreateDbParmCharacter() + columnName);
                    }
                    else
                    {
                        sbSql.Append("," + columnName);
                        sbSql.Append("=");
                        sbSql.Append(DbParameters.CreateDbParmCharacter() + columnName);
                    }
                }
            }
            sbSql.Append(" Where ").Append(pkName).Append("=").Append(DbParameters.CreateDbParmCharacter() + pkName);
            return(sbSql);
        }
Example #2
0
        /// <summary>
        /// 拼接删除SQL语句
        /// </summary>
        /// <param name="entity">实体类</param>
        /// <returns></returns>
        public static StringBuilder DeleteEntitySql <T>(T entity)
        {
            Type type = entity.GetType();

            PropertyInfo[] props = type.GetProperties();
            StringBuilder  sb    = new StringBuilder($"Delete From {type.GetMappingAttributeName()} Where 1=1");

            foreach (PropertyInfo prop in props)
            {
                if (prop.GetValue(entity) != null)
                {
                    sb.Append($" AND {prop.GetMappingAttributeName()} = { DbParameters.CreateDbParmCharacter() }{ prop.GetMappingAttributeName()}");
                }
            }
            return(sb);
        }
Example #3
0
        /// <summary>
        /// 对象参数转换DbParameter
        /// </summary>
        /// <returns></returns>
        public static DbParameter[] GetParameter(Hashtable ht)
        {
            IList <DbParameter> parameter = new List <DbParameter>();
            DbType dbtype = new DbType();

            foreach (string key in ht.Keys)
            {
                if (ht[key] is DateTime)
                {
                    dbtype = DbType.DateTime;
                }
                else
                {
                    dbtype = DbType.String;
                }
                parameter.Add(DbParameters.CreateDbParameter(DbParameters.CreateDbParmCharacter() + key, ht[key], dbtype));
            }
            return(parameter.ToArray());
        }
Example #4
0
        /// <summary>
        /// 对象参数转换DbParameter
        /// </summary>
        /// <returns></returns>
        public static DbParameter[] GetParameter <T>(T entity)
        {
            IList <DbParameter> parameter = new List <DbParameter>();
            DbType dbtype = new DbType();
            Type   type   = entity.GetType();

            PropertyInfo[] props = type.GetProperties();
            foreach (PropertyInfo pi in props)
            {
                if (pi.GetValue(entity, null) != null)
                {
                    switch (pi.PropertyType.ToString().ToLower())
                    {
                    case "system.nullable`1[system.int32]":
                        dbtype = DbType.Int32;
                        break;

                    case "system.nullable`1[system.decimal]":
                        dbtype = DbType.Decimal;
                        break;

                    case "system.nullable`1[system.datetime]":
                        dbtype = DbType.DateTime;
                        break;

                    case "system.nullable`1[system.int64]":
                        dbtype = DbType.Int64;
                        break;

                    case "system.nullable`1[system.boolean]":
                        dbtype = DbType.Boolean;
                        break;

                    default:
                        dbtype = DbType.String;
                        break;
                    }
                    parameter.Add(DbParameters.CreateDbParameter(DbParameters.CreateDbParmCharacter() + pi.GetMappingAttributeName(), pi.GetValue(entity, null), dbtype));
                }
            }
            return(parameter.ToArray());
        }
Example #5
0
        /// <summary>
        /// 泛型方法,反射生成InsertSql语句
        /// </summary>
        /// <param name="entity">实体类</param>
        /// <returns>int</returns>
        public static StringBuilder InsertEntitySql <T>(T entity)
        {
            Type          type  = entity.GetType();
            StringBuilder sbSql = new StringBuilder();

            sbSql.Append($"Insert Into {type.GetMappingAttributeName()} (");
            StringBuilder sp       = new StringBuilder();
            StringBuilder sb_prame = new StringBuilder();

            PropertyInfo[] props = type.GetProperties();
            foreach (PropertyInfo prop in props)
            {
                if (prop.GetValue(entity) != null)
                {
                    sb_prame.Append($",{prop.GetMappingAttributeName()}");
                    sp.Append($",{DbParameters.CreateDbParmCharacter() }{prop.GetMappingAttributeName()}");//?ID
                }
            }
            sbSql.Append(sb_prame.ToString().Substring(1, sb_prame.ToString().Length - 1) + ") Values (");
            sbSql.Append(sp.ToString().Substring(1, sp.ToString().Length - 1) + ")");
            return(sbSql);
        }