Beispiel #1
0
        /// <summary>
        /// 添加当前实体对应数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual DbEntity Insert <T>(T entity)
        {
            DbEntity dbEntity = null;

            if (entity == null)
            {
                return(dbEntity);
            }
            Type           type             = typeof(T);
            var            attributeBuilder = new AttributeBuilder();
            TableAttribute tableEntity      = attributeBuilder.GetTableInfo(type);
            var            columns          = new AttributeBuilder().GetColumnInfos(type, entity);

            if (columns.Count < 0)
            {
                return(dbEntity);
            }
            if (columns.Where(a => !a.IsAutoIncrement).FirstOrDefault() == null)
            {
                return(dbEntity);
            }
            var noneAutoIncrementColumns = columns.Where(a => !a.IsAutoIncrement).ToList();
            var dbOperator = DbFactory.GetDbParamOperator();
            var dbParams   = new List <IDbDataParameter>();
            var sqlBuild   = new StringBuilder("insert into {tableName}({columnNames}) values({columnValues})");

            sqlBuild.Replace("{tableName}", tableEntity.TableName);
            var columnNameList  = new List <string>();
            var paramColumnList = new List <string>();

            foreach (var column in noneAutoIncrementColumns)
            {
                columnNameList.Add(column.ColumnName);
                paramColumnList.Add(dbOperator + column.ColumnName);
                dbParams.Add(DbFactory.GetDbParam(column));
            }
            sqlBuild.Replace("{columnNames}", string.Join(",", columnNameList));
            sqlBuild.Replace("{columnValues}", string.Join(",", paramColumnList));
            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuild.ToString(),
                DbParams    = dbParams
            };
            return(dbEntity);
        }
Beispiel #2
0
        /// <summary>
        /// 添加单条数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public virtual DbEntity Insert <T>(T entity)
        {
            DbEntity dbEntity = null;

            if (entity == null)
            {
                return(dbEntity);
            }
            Type           type             = typeof(T);
            var            attributeBuilder = new AttributeBuilder();
            TableAttribute tableEntity      = attributeBuilder.GetTableInfo(type);
            var            columns          = new AttributeBuilder().GetColumnInfos(type, entity);

            if (columns == null || columns.Count < 0)
            {
                return(dbEntity);
            }
            if (columns.Where(a => !a.IsAutoIncrement).FirstOrDefault() == null)
            {
                return(dbEntity);
            }
            var noAutoIncrementColumns = columns.Where(a => !a.IsAutoIncrement && !a.IsIgnoreAdd).ToList();
            var dbOperator             = DbFactory.GetDbParamOperator();
            var dbParams   = new List <IDbDataParameter>();
            var sqlBuilder = new StringBuilder("insert into {tableName}({columnNames}) values({columnValues});");

            sqlBuilder.Replace("{tableName}", tableEntity.TableName);

            #region 处理添加字段及参数SQL语句
            var addItem = HandleAddColumnValueParam(noAutoIncrementColumns, sqlBuilder, dbParams);
            sqlBuilder = addItem.Item1;
            dbParams   = addItem.Item2;
            #endregion

            #region 处理自动增长列Sql
            var autoIncrementColumn = columns.Where(a => a.IsAutoIncrement).FirstOrDefault();
            if (tableEntity.IsGetAutoIncrementValue && autoIncrementColumn != null)
            {
                var dbTypeValue = Convert.ToInt32(CurrentDbType);
                switch (dbTypeValue)
                {
                case 1:
                case 2:
                    sqlBuilder.Append(GetAutoIncrementSql());
                    break;

                case 3:
                    sqlBuilder.AppendFormat(GetAutoIncrementSql(), autoIncrementColumn.ColumnName);
                    break;

                case 4:
                    sqlBuilder.AppendFormat(GetAutoIncrementSql(), tableEntity.TableName);
                    break;
                }
            }
            else
            {
                tableEntity.IsGetAutoIncrementValue = false;
            }
            #endregion

            dbEntity = new DbEntity()
            {
                TableEntity = tableEntity,
                CommandText = sqlBuilder.ToString(),
                DbParams    = dbParams
            };
            return(dbEntity);
        }